如何将结果集行作为索引子数组添加到结果数组中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将结果集行作为索引子数组添加到结果数组中?相关的知识,希望对你有一定的参考价值。

我有一个mysqli结果集,有两列数据和几行。我想将结果集的每一行存储为我的结果数组中的索引子数组(特别是在$rows['data']中)。

这是我目前的代码:

$query = mysqli_query($con,"SELECT Energy_UTC,Total_watts FROM combined_readings");
$rows = array();
$rows['name'] = 'Total_watts';
while ($tmp = mysqli_fetch_array($query)) {
    $rows['data'][] = $tmp['Energy_UTC'];
    $rows['data'][] = $tmp['Total_watts'];
}

这会产生一个如下所示的数组:

{"name":"Total_watts","data":[1519334969,259,1519335149,246,1519335329,589,1519335509,589,1519335689,341,1519335869,341,1519336050,523,1519336230,662,1519336410,662,1519336590,469]}

但我需要结果是一个如下所示的数组:

{"name":"Total_watts","data":[1519334969,259],[1519335149,246],[1519335329,589],[1519335509,589],[1519335689,341],[1519335869,341],[1519336050,523],[1519336230,662],[1519336410,662],[1519336590,469]}

有人可以建议改变php while循环来产生这个输出吗?

答案

您只需调整语法以将元素放在同一个子数组中。

while($tmp = mysqli_fetch_array($query)) {
  $rows['data'][] = [$tmp['Energy_UTC'],$tmp['Total_watts']];
}

附:此外,您可以使用mysqli_fetch_assoc(),因为您只访问关联键。或者甚至更好,使用mysqli_fetch_row()并将行分配给结果数组。

全部烤好了,它看起来像这样:

if(!$result=mysqli_query($con,"SELECT Energy_UTC,Total_watts FROM combined_readings")){
    // handle the query error
}else{
    $rows=['name'=>'Total_watts'];
    while($row=mysqli_fetch_row($result)){
        $rows['data'][]=$row;  // this will store subarrays like: [1519334969,259]
    }
}

以上是关于如何将结果集行作为索引子数组添加到结果数组中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ydn-db-fulltext 在数组中索引子对象属性?

如何将数组矩阵的结果存储到较小的数组c#

php 一个结果集中有多个数组,怎样将它放入一个新的数组中

如何在我的数组中添加货币符号?

如何根据与其添加对应的索引删除子层?

如何将 Sparql 查询结果存储到数组中?