从 MySQL 结果创建 PHP 数组

Posted

技术标签:

【中文标题】从 MySQL 结果创建 PHP 数组【英文标题】:Create PHP Array From MySQL Result 【发布时间】:2021-12-14 02:20:05 【问题描述】:

mysql db 查询的输出如下(示例):

type   count   amount
----   -----   ------
A      1       100
B      2       200
C      3       300

等等...保存在一个名为$dataphp变量中

从这个结果中,我想循环遍历结果并创建一个 php 数组,它将像这样输出 json:


    "types": [
            
            "type": "A",
            "count": 1,
            "amount": 100
           
            
            "type": "B",
            "count": 2,
            "amount": 200
           
            
            "type": "C",
            "count": 3,
            "amount": 300
           
      ]

到目前为止我所做的......我可以像这样循环它们:

foreach($data as $k=>$v) 
 echo $v->type;
 echo $v->count;
 echo $v->amount;    

如何用这个创建一个 php 数组?我知道如何转换为 JSON,但我需要帮助来编写将创建该格式数组的循环。

【问题讨论】:

【参考方案1】:

从您发布的代码中,您已经有了一个对象数组。从中您可以简单地创建父对象并将数据分配给它:

// json_encode will create JSON objects for PHP arrays with string keys.
$parent = ['types'=>$data];
echo json_encode($parent, JSON_PRETTY_PRINT);

【讨论】:

感谢您提供非常简单的解决方案!【参考方案2】:

在不知道如何将数据放入$data 变量的情况下,您可以这样构造一个新数组:

$array = ['types' => []];

foreach ($data as $k => $v) 
   $array['types'][] = [
       'type' => $v->type,
       'count' => $v->count,
       'amount' => $v->amount
   ];


echo json_encode($array, JSON_PRETTY_PRINT);

【讨论】:

这一切似乎都有点涉及,因为 OP 以数组开头。他可以在一行中将它分配给父数组中的一个元素,然后 json_encode() 它。 是的,这不是解决问题的最有效方法,但 OP 寻求帮助,了解如何编写有助于他构建数组的循环。 @JacobMulquin 我将查询结果转换为 $data 的方式是 get_var($query)

以上是关于从 MySQL 结果创建 PHP 数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP从获取数组创建一个数组

从多个PHP数组创建JSON

php mysql 查询

如何从 mySQL 和 PHP 检索结果为多维数组?

比较 php MySQL 查询结果数组以从其中一个数组中获取关联值

PHP - 从查询结果中获取对象数组