2015-05-14 81 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 
     ) 
    //... 

)