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

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

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

等等...保存在一个名为$data的php变量中

从这个结果中,我想循环遍历结果并创建一个 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,但我需要帮助来编写将创建该格式数组的循环。

【问题讨论】:

    标签: php mysql arrays 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)
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 2015-08-11
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多