2015-05-14 82 views
2

目前,我有一个数组,如:总结,重组和“扁平化”,整个多维数组

Array(
    [0] => Array([range]=>1-10 [count]=>3 [type]=>A) 
    [1] => Array([range]=>11-20 [count]=>6 [type]=>A) 
    [2] => Array([range]=>21-30 [count]=>5 [type]=>A) 

    [3] => Array([range]=>1-10 [count]=>5 [type]=>B) 
    [4] => Array([range]=>11-20 [count]=>3 [type]=>B) 
    [5] => Array([range]=>21-30 [count]=>8 [type]=>B) 

    [6] => Array([range]=>1-10 [count]=>4 [type]=>C) 
    [7] => Array([range]=>11-20 [count]=>3 [type]=>C) 
    [8] => Array([range]=>21-30 [count]=>6 [type]=>C) 

    [9] => Array([range]=>1-10 [count]=>3 [type]=>D) 
    [10] => Array([range]=>11-20 [count]=>7 [type]=>D)  

然后我试图重新集结/翻拍阵列取决于他们type和预期产量将如:

Array(
    [0] => Array([type]=>A [1-10]=>3 [11-20]=>6 [21-30]=>5) 
    [1] => Array([type]=>B [1-10]=>5 [11-20]=>3 [21-30]=>8) 
    [2] => Array([type]=>C [1-10]=>4 [11-20]=>3 [21-30]=>6) 
    [3] => Array([type]=>D [1-10]=>3 [11-20]=>7) 
) 

我已经试过array_column但不正是我想要的......

Example Here.

在此先感谢。

回答

1

这应该为你工作:

在这里,我简单地遍历整个数组,然后用isset()检查结果数组已经有innerArray与同类型(例如$result["A"]),如果我不能添加的类型作为内部数组的值(.eg $result["A"]["type"] = "A";)。

此检查后,我只需添加rangecount每种类型(例如$result["A"]["1-10"] = 3;

最后我简单地重新索引整个$result阵列array_values()

<?php 

    foreach($arr as $k => $v) { 
     if(!isset($result[$v["type"]])) 
      $result[$v["type"]]["type"] = $v["type"]; 
     $result[$v["type"]][$v["range"]] = $v["count"]; 
    } 
    $result = array_values($result); 

    print_r($result); 

?> 

输出:

Array 
(
    [0] => Array 
     (
      [type] => A 
      [1-10] => 3 
      [11-20] => 6 
      [21-30] => 5 
     ) 
    //... 

)