首页 > 解决方案 > 将第二个查询结果作为关联数组推送到从 fetch_assoc 获取的现有数据中

问题描述

我正在尝试合并两个 SQL 查询结果,而第一个查询总是会返回一行,而第二个查询可能会返回 0 到多行。我将第一个查询结果加载到 PHP 中的数组中,例如

$data = [];
while($row = $result->fetch_assoc()) {
  $data=$row;
}

并尝试附加第二个查询的结果(记住这次可以是很多行),比如

while($rowtwo = $resulttwo->fetch_assoc()) {
  array_push($data, array('per' => $row['per'],
'duration' => $row['duration']));
}

输出print_r()看起来像

Array
(
    [term] => 0
    [available] => 1
    [0] => Array
        (
            [per] => 2019-09-04
            [duration] => 14
        )

    [1] => Array
        (
            [per] => 2019-09-04
            [duration] => 15
        )

    [2] => Array
        (
            [per] => 2019-09-04
            [duration] => 15-30
        )

    [3] => Array
        (
            [per] => 2019-09-04
            [duration] => 16
        )
)   

但是我需要将第二个查询存储为数组内的数组,例如

Array
(
    [term] => 0
    [available] => 1
    [newarray] = [
            [0] => Array
                (
                    [per] => 2019-09-04
                    [duration] => 14
                )

            [1] => Array
                (
                    [per] => 2019-09-04
                    [duration] => 15
                )

            [2] => Array
                (
                    [per] => 2019-09-04
                    [duration] => 15-30
                )

            [3] => Array
                (
                    [per] => 2019-09-04
                    [duration] => 16
        )
        ]
)   

标签: phparrays

解决方案


在您的第一个查询之后和第二个查询之前,将一个newentry元素添加到您的$data数组中。然后将值推入其中,而不是$data

$data = [];
while($row = $result->fetch_assoc()) {
  $data = $row;
}
// ...
$data['newentry'] = array();
while($rowtwo = $resulttwo->fetch_assoc()) {
  array_push($data['newentry'], array('per' => $rowtwo['per'],
                                      'duration' => $rowtwo['duration']));
}

请注意,您$row在第二个循环中。我已经$rowtwo在这段代码中更正了这一点。


推荐阅读