【问题标题】:group an array by name and age按名称和年龄对数组进行分组
【发布时间】:2021-03-03 21:38:43
【问题描述】:

你能帮帮我吗,我有这个 PHP,我可以从中得到一个数组。但我想更改它的输出,并能够按名称和年龄对它们进行分组。

这是我的 PHP

<?php

    $name = array();
    $age  = array();

    $sql = $conn->runQuery("SELECT * FROM staff");
    $sql->execute();
    
    while ($row = $sql->fetch(PDO::FETCH_ASSOC))
        {
            $name[] = $row['name'];
            $age[]  = $row['age'];
        }

    $posts = [
        "name"  => $name,
        "age"   => $age,
    ];

    echo json_encode($posts, JSON_PRETTY_PRINT);

 ?>

这就是结果。

{
    "name": [
        "Erik",
        "Rose",
        "Abby",
        "Abner"
    ],
    "age": [
        "18",
        "28",
        "25",
        "22"
    ]
}

但是,我希望数组返回如下。

[
  {
    "name": Erik,
    "age": 18
  },
  {
    "name": Rose,
    "age": 28
  }
]

你能帮我吗,我该如何制作这种数组?

【问题讨论】:

    标签: php arrays json


    【解决方案1】:

    或者使用fetchAll() :

    $qry = $conn->prepare("SELECT field1, field2 FROM table");
    $qry->execute();
    
    $data = $qry->fetchAll(PDO::FETCH_ASSOC);
    $json = json_encode($data);
    

    【讨论】:

      【解决方案2】:

      我将对这个脚本做的调整如下:

      $sql = $conn->runQuery("SELECT * FROM staff");
      $sql->execute();
      
      $people = [];
      while ($row = $sql->fetch(PDO::FETCH_ASSOC))
      {
         $people[] = ['name' => $row['name'], 'age' => $row['age']];
      }
      echo json_encode($people, JSON_PRETTY_PRINT);
      

      【讨论】:

      • 谢谢,您的评论对我帮助很大。
      猜你喜欢
      • 2019-02-23
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多