【问题标题】:Converting a multi-dimensional php array into a JSON array of objects将多维 php 数组转换为 JSON 对象数组
【发布时间】:2012-07-19 10:16:55
【问题描述】:

我需要在 php 中创建一个多维数组,并希望在 jQuery 脚本中将其用作 JSON 对象数组;

jQuery 脚本中所需的输出应如下所示:

data = [
        { Month:'April', Comms:1000, Fees:200, Gains: 200},
        { Month:'May',   Comms:1200, Fees:300, Gains: 300}
        ]   

目前我的php数组生成如下:

    $data1[] = array(
        'Month' => 'April',
        'Comms' => 1000,
        'Fees'  => 200,
        'Gains' => 200      
    );      
    $data2[] = array(
        'Month' => 'May',
        'Comms' => 1200,
        'Fees'  => 300,
        'Gains' => 300      
    );

    echo json_encode($data);

我的问题是如何将 data1 和 data2 组合到 json_encode php 函数中的数据数组中,这将产生所需的 jQuery JSON 对象数组?

我确实有不同数组字段的值,并且可以以不同的方式创建 data1 和 data2,因此数据很灵活,我可以以任何其他方式将它们组合起来,从而生成数据数组,并将它们输出到必需的 JSON 格式。

任何帮助将不胜感激,我已经看到有关此主题的问题,但没有一个可以解决我面临的问题。

【问题讨论】:

    标签: php jquery arrays json multidimensional-array


    【解决方案1】:

    简单地说:

    echo json_encode($data1 + $data2);
    

    请注意,您也可以使用+ 来合并数组。

    【讨论】:

    • 谢谢,这应该可以,但出于某种原因,我只能得到第一行。可能是因为在 Joomla 中使用了模型和控制器,但我会记住这一点。
    【解决方案2】:

    您需要将两个数组合并为一个新的数组数组。请参阅manual 了解更多信息。

    $data = array_merge($data1, $data2);
    echo json_encode($data)
    

    或者,更简单的是使用+ 运算符:

    echo json_encode($data1 + $data2)
    

    【讨论】:

    • 谢谢,事实上,我确实尝试过 $data1 + $data2 但我一直只得到第一行。我的情况比我原来的问题稍微复杂一些。我在 Joomla 应用程序的模型中创建了这些数组,它将组合数组返回到控制器,我在其中使用 json_encode。我尝试在模型中使用 json_encode 并将结果返回给控制器,但是使用 + 运算符只显示第一行,但 array_merge 成功了。
    • 很可能是 Joomla 的限制。我很高兴你能成功。
    【解决方案3】:

    试试:

    echo json_encode(array_merge($data1, $data2));
    

    【讨论】:

      【解决方案4】:

      写:

      echo json_encode($data1 + $data2);
      

      【讨论】:

        【解决方案5】:

        只是用户

        echo json_encode($data1 + $data2);
        

        【讨论】:

          【解决方案6】:

          您应该通过使用 groupBy 月份从数据库中提取数据来创建另一个数组并将数据存储在其他数组中。

          $array = array();  
          foreach ($data as $element) {
              $array[$element['month']][] = [ 'comms' => $element['comms'], 'fees' => $element['fees'], 'gains' => $element['gains']
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-28
            • 2016-11-28
            • 2012-11-14
            相关资源
            最近更新 更多