【问题标题】:Rearrange Array Result of MySQLi Query重新排列 MySQLi 查询的数组结果
【发布时间】:2018-06-24 22:22:29
【问题描述】:

我有一个 MySQLi 查询,它以 json 格式从我的数据库中获取数据。现在我想使用 PHP 重新排列结果以形成一个新数组。

$conn = new mysqli("localhost", "root", "", "angular");

$out = array();

$sql = "SELECT * FROM members";
$query = $conn->query($sql);

while($row=$query->fetch_array()){
    $out[] = $row;
}

echo json_encode($out);

这个查询的结果是这样的:

[
  {
    "0": "1",
    "1": "Neovic",
    "2": "Devierte",
    "3": "Silay City",
    "memid": "1",
    "firstname": "Neovic",
    "lastname": "Devierte",
    "address": "Silay City"
  },
  {
    "0": "2",
    "1": "Julyn",
    "2": "Divinagracia",
    "3": "E.B. Magalona",
    "memid": "2",
    "firstname": "Julyn",
    "lastname": "Divinagracia",
    "address": "E.B. Magalona"
  },
  {
    "0": "3",
    "1": "Gemalyn",
    "2": "Cepe",
    "3": "Bohol",
    "memid": "3",
    "firstname": "Gemalyn",
    "lastname": "Cepe",
    "address": "Bohol"
  },
  {
    "0": "4",
    "1": "Tintin ",
    "2": "Demapanag",
    "3": "Talisy City",
    "memid": "4",
    "firstname": "Tintin ",
    "lastname": "Demapanag",
    "address": "Talisy City"
  },
  {
    "0": "5",
    "1": "Tintin ",
    "2": "Devierte",
    "3": "Silay City",
    "memid": "5",
    "firstname": "Tintin ",
    "lastname": "Devierte",
    "address": "Silay City"
  }
]

现在我想要这样的结果:

[
    firstname: {"Neovic", "Julyn", "Gemalyn", "Tintin", "Tintin"},
    lastname: {"Devierte", "Divinagracia", "Cepe", "Demapanag", "Devierte"}
]

这可以在 PHP 中实现吗?任何帮助表示赞赏。

【问题讨论】:

  • 你有没有为此尝试过任何东西......
  • 如果不需要其他数据,也可以SELECT firstname,lastname FROM members代替SELECT *
  • nurhodelta_17 While 循环中的一个小改动将为您提供所需的输出。检查我的答案一次

标签: php mysql json mysqli


【解决方案1】:
<?php

$i=0;
while ($row = $query->fetch_array())
{
    $user[$i]['first_name'] = $row['firstname'] ;
    $user[$i]['last_name'] = $row['lastname'] ;
   $i++;

 }
json_encode($user);
?>

【讨论】:

  • 不需要创建两个单独的数组,先分配给它们,然后再分配给最终数组。你可以用一个变量本身来做到这一点。检查我的答案一次
  • 你确定。因为我认为我是正确的(已经测试过)。尽管您的答案与 OP 的预期相去甚远。
【解决方案2】:

1.由于您不需要所有数据,因此请像这样查询:-

$sql = "SELECT firstname,lastname FROM members";

2.更改while循环代码如下,你就完成了:-

while($row=$query->fetch_array()){
    $out['firstname'][] = $row['firstname'];
    $out['lastname'][] = $row['lastname'];
}

所以完整的代码需要是:-

$conn = new mysqli("localhost", "root", "", "angular");

$out = array();

$sql = "SELECT firstname,lastname FROM members";
$query = $conn->query($sql);

while($row=$query->fetch_array()){
    $out['firstname'][] = $row['firstname'];
    $out['lastname'][] = $row['lastname'];
}

echo json_encode($out);

【讨论】:

  • @GYaN 不明白你在说什么
  • 现在什么都没有......一切都好+1
  • 感谢@AlivetoDie
  • @nurhodelta_17 很高兴为您提供帮助:):)
【解决方案3】:

您可以将数据存储在单独的数组中:

<?php
$firsts = [] ;
$lasts = [] ;
while ($row = $query->fetch_array()) {
    $firsts[] = $row['firstname'] ;
    $lasts[] = $row['lastname'] ;
}
$out = ['firstname' => $firsts, 'lastname' => $lasts] ;
?>

【讨论】:

  • 无需创建两个单独的数组,在while 中对这两个数组进行分配,然后将它们分配给最终数组。你可以用一个变量本身来做到这一点。检查我的答案一次
猜你喜欢
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多