如何将 2 个数组组合成 1 个 json_encode 结果?

时间:2021-03-25 22:14:16

标签: php mysql json

这个问题不关注如何修复或什么是未定义的索引/变量,而是关注如何编写逻辑来连接两个结果。因此,它与"Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset" using PHP 不同。如果你不这么说,你不妨花时间再读一遍问题。

我正在使用 MySQL 查询来获取不同类型(1-8 或所有类型)的产品列表。

现在有一个特殊情况,type = 8。在这种情况下,数据应该来自不同的表。我无法理解如何实现这一点。我正在尝试使用 array_merge 加入两个数组。我需要将两个结果一起编码以备将来使用。

更新 table1 有 23 列 & table2 有 18 列:

UNIONs (UNION and UNION ALL) require that all the queries being UNION'd have:
The same number of columns in the SELECT clause
The column data type has to match at each position

这里的挑战是不同时间出现的类型,如下所示: enter image description here

GetProductList.php

if ($type == 8) {
$sql2 = "";
}

if ($type != "8") { // originally $type != "%"
$typeCondition = "...$type";

$sql1 = "".typeCondition;
} else {
    $typeCondition = "";
}

if ($sql1) {
    $result1 = mysqli_query($con, $sql1);
    $list1 = array();
    while ($row = mysqli_fetch_assoc($result1)) {
        $list1[] = $row;
    }
}

if ($sql2) {
    $result2 = mysqli_query($con, $sql2);
    $list2 = array();
    while ($row = mysqli_fetch_assoc($result2)) {
        $list2[] = $row;
    }
}


if ($sql1 && $sql2) {
    $merged_results = array_merge($list1, $list2);
}
echo json_encode($merged_results);

电流输出

GetProductList.php?project=1&type=1:

variable: sql2

GetProductList.php?project=1&type=8

variable: sql1

1 个答案:

答案 0 :(得分:0)

我终于找到了解决办法。 $sql1 对于 type = 1 & type = 8 是不同的。由于它们在不同的时间执行,所以它们总是得到正确的结果:

if ($type != "%" && $type != "8") {
$typeCondition =  " … = $type ";

$sql1 =  "".
$typeCondition.
"";
} elseif ($type == "8"){
$typeCondition =  " … = $type ";

$sql1 =
$typeCondition.
"";
} else {
$typeCondition = "";
}

$sql = $sql1;

$result = mysqli_query($con, $sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list[] = $row;
}

echo json_encode($list);