2009-09-12 52 views
0

我有一個數組,看起來像下面這樣:在PHP中整合數組?

陣列(

[0] => Array 
    (
     [id] => 10 
     [value] => 5 
    ) 

[1] => Array 
    (
     [id] => 10 
     [value] => 1 
    ) 

[2] => Array 
    (
     [id] => 11 
     [value] => 1 
    ) 

[3] => Array 
    (
     [id] => 11 
     [value] => 1 
    ) 

我怎樣才能鞏固按id的陣列?結果數組我要找會是這樣的:

陣列(

[0] => Array 
    (
     [id] => 10 
     [value] => 6 
    ) 

[1] => Array 
    (
     [id] => 11 
     [value] => 2 
    ) 

回答

2

這並不是一個非常有效的結構。你有沒有考慮以這種形式鞏固它?

array 
(
    10 => 6, 
    11 => 2, 
); 

這將允許快速鍵在ID上查找。

鞏固你的第一個數組轉換成這種形式,只是這樣做:

$array2 = array(); 
foreach($array1 as $row) 
{ 
    if(isset($array2[$row['id']])) 
     $array2[$row['id']] += $row['value']; 
    else 
     $array2[$row['id']] = $row['value']; 
} 

這將使你在形式的數組:

$array2 = array 
(
    10 => 6, 
    11 => 2, 
); 

如果你真的需要它你所要求的形式,多一個處理循環會得到它...

$array3 = array(); 
foreach($array2 as $id => $value) 
{ 
    $array3[] = array('id' => $id, 'value' => $value); 
} 

所以,你去!


,更緊湊:

$array2 = array(); 
foreach($array1 as $row) 
    $array2[$row['id']] = (isset($array2[$row['id']]) ? $array2[$row['id']] : 0) + $row['value']; 

$array3 = array(); 
foreach($array2 as $id => $value) 
    $array3[] = array('id' => $id, 'value' => $value);