如何从 php 中的 sql pdo 数据形成 Json 数组?

How to form Json array from sql pdo data in php?

我的代码没有显示我需要的东西,告诉我我做错了什么

   $new_array =[];
  foreach($result as $row)
   {
    $array =[
        'id'=> $row["id"],
        'summ' => $row["summ"],
    ];
    foreach($array AS $key => $val) {
     $new_array[] = $val;
    }
   }
   echo json_encode($new_array);

输出如下结果

["26","180","25","35","24","50","23","50","22","100"]

但我需要不同的结果,但我做不到。 下面是一个示例:

[
{"26","180"},
{"25","35"},
{"24","50"},
{"23","50"},
{"22","100"}
]

请告诉我如何实现这个?

检查这个:

foreach($result as $row)
   $array[] = ['id'=>$row["id"], 'summ'=>$row["summ"]];
echo json_encode($array);

例如,如果您的 $result 包含这样一个数组:

$result    = [['id'=>1, 'summ'=>2] , ['id'=>3, 'summ'=>4] , ['id'=>5, 'summ'=>6]];  

脚本输出将是:

[
    {"id":1,"summ":2},
    {"id":3,"summ":4},
    {"id":5,"summ":6}
]

您可以跳过内部循环:

$new_array = [];

foreach($result as $row)
{
    $new_array[] = [
        $row['id'],
        $row['summ']
    ];
}

echo json_encode($new_array);

这应该会给你结果:

[
    ["26","180"],
    ["25","35"],
    ...
]

除了其他答案,

这种数组转换我一般用array_map

$result = [['id' => 1, 'summ' => 2], ['id' => 3, 'summ' => 4], ['id' => 5, 'summ' => 6]];

$output = array_map(function ($item) {
    return [$item['id'], $item['summ']];
}, $result);