在php中按数组元素分组数组数据

时间:2012-06-15 16:31:26

标签: php arrays group-by

这是我的数组:

Array
(
[1] => Array
    (
        [0] => Array
            (
                [date] => 1335848400000
                [value] => 1
                [product_id] => 1
                [title] => Test Product
            )

        [1] => Array
            (
                [date] => 1338526800000
                [value] => 8
                [product_id] => 1
                [title] => Test Product
            )

    )

[2] => Array
    (
        [0] => Array
            (
                [date] => 1335848400000
                [value] => 1
                [product_id] => 2
                [title] => Test Product 2
            )

        [1] => Array
            (
                [date] => 1338526800000
                [value] => 4
                [product_id] => 2
                [title] => Test Product 2
            )

    )

[3] => Array
    (
        [0] => Array
            (
                [date] => 1338526800000
                [value] => 6
                [product_id] => 3
                [title] => Test Product 3
            )

    )

)

我希望它显示为:

{
name: 'Test Product',
data: [[1335848400000, 1],[1338526800000, 8]]
},
{
name: 'Test Product 2',
data: [[1335848400000, 1], [1338526800000, 4]]
},
{
name: 'Test Product 3',
data: [[1338526800000, 6]]
},

我需要将日期和值组合在一起作为highcharts。

我该怎么做呢?我不知道从哪里开始。我已经对它进行了研究,但找不到一个好的例子。

编辑:

工作代码除了一个错误:

for($i=0 ; $i<=count($array) ; $i++)
                    {
                    $result_array[$i]['name'] = $array[$i][0]['title'];
                        for($j=0 ; $j<count($array[$i]) ; $j++)
                        {
                            $result_array[$i]['data'][$j][0] = $array[$i][$j]['date'];
                            $result_array[$i]['data'][$j][1] = $array[$i][$j]['value'];
                        }
                    }

                    echo $result = json_encode($result_array);

错误:

严重性:注意

消息:未定义的偏移量:0

文件名:name.php

行号:115

[{"name":null},{"name":"Test Product","data":[[1335848400000,"1"],[1338526800000,"8"]]},{"name":"Test Product 2","data":[[1335848400000,"1"],[1338526800000,"4"]]},{"name":"Test Product 3","data":[[1338526800000,"6"]]}] 

1 个答案:

答案 0 :(得分:1)

您可以使用此循环

<?php

for($i=1 ; $i<=count($main_array) ; $i++)
{
   $result_array[$i]['name'] = $main_array[$i][0]['title'];
   for($j=1 ; $j<=count($main_array[$i]) ; $j++)
   {
       $result_array[$i]['data'][$j][0] = $main_array[$i][$j]['date'];
       $result_array[$i]['data'][$j][1] = $main_array[$i][$j]['value'];
   }
}


echo $result = json_encode($result_array);

?>

我已经测试过了......它可以按照你想要的方式运行

相关问题