【问题标题】:How to form Json array from sql pdo data in php?如何从 php 中的 sql pdo 数据形成 Json 数组?
【发布时间】:2022-01-10 07:15:47
【问题描述】:

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

   $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"}
]

请告诉我如何做到这一点?

【问题讨论】:

  • 预期结果不是有效的 JSON。而不是{"26", "180"},你不是说["26", "180"]吗?
  • 到目前为止你尝试过什么?这种格式有什么规则吗?

标签: php arrays json foreach


【解决方案1】:

检查一下:

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}
]

【讨论】:

    【解决方案2】:

    你可以跳过内循环:

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

    这应该会给你结果:

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

    【讨论】:

      【解决方案3】:

      除了其他答案,

      我通常使用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);
      

      【讨论】:

        猜你喜欢
        • 2014-04-30
        • 1970-01-01
        • 2021-02-27
        • 2014-08-12
        • 2015-08-02
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        • 2016-04-17
        相关资源
        最近更新 更多