首页 > 解决方案 > 如何为所有匹配结果创建单个 JSON?

问题描述

我正在从数据库中获取数据,并且在获取数据时,我会检查每个结果是否符合特定条件,如果符合,我希望它将包含所有详细信息的行添加为同一 JSON 中的新对象,所以我最终得到一个包含所有匹配行的 JSON

while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
    if (matching criteria){
        //add row to the JSON
    }
}

现在我可以添加每一行并回显它,但它会覆盖前一行:

while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {        
    if (matching criteria){
         $firstColumn = $result['firstColumn'];
         $secondColumn= $result['secondColumn'];
         //more columns if necessary. . .
         $myObj->firstColumn = $firstColumn ;
         $myObj->secondColumn= $secondColumn;       
         $myJSON = json_encode($myObj);
         echo $myJSON;
    }
}

标签: php

解决方案


尝试这种方式使用 myObj Data 创建一个数组为该数组分配值,并在获取数组集合后转换为 Json 对象

$data = array(array());
$i = 0;
$j = 0;
while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {        
    if (matching criteria){
         $firstColumn = $result['firstColumn'];
         $secondColumn= $result['secondColumn'];
         //more columns if necessary. . .
         $myObj->firstColumn = $firstColumn ;
         $myObj->secondColumn= $secondColumn;       
         $data[i][j]=$firstColumn;
         $j++;
         $data[i][j]=$secondCoulmn;
         $i++;
         $j--;
    }
}
$myJSON = json_encode($data);
echo $myJSON;

推荐阅读