2015-05-22 36 views
-1
Array 
(
[0] => Array 
    (
     [0] => 17 
     [1] => 111 
    ) 
[1] => Array 
    (
     [0] => 17 
     [1] => 10 
    ) 
[2] => Array 
    (
     [0] => 20 
     [1] => 111 
    ) 
) 

的vaues總結我想這個數組轉換爲:轉換多維數組中的一個維數組由像這裏顯示

array 
(
    [17]=>121 
    [20]=>111 
) 

有任何PHP陣列功能,可以很容易地做到這一點。我知道另一種方式,但想知道是否有任何現成的功能可以做到這一點? 請幫助。

在這裏,我其實是想

[0] => Array 
    (
     [0] => 17 
     [1] => 111 
    ) 

17轉換爲重點,採取111值,那麼在接下來的陣列

[1] => Array 
    (
     [0] => 17 
     [1] => 10 
    ) 

做同樣的事情得到第一個值17項,並添加10到先前值111 ,其是121,然後 [2] =>數組 ( [0] => 20 [1] => 111 ) 以20爲鍵,並將值111分配給該鍵,所以基本上,我希望將第一個值作爲鍵,將第二個值作爲值,對於所有相同的鍵,我想要按照前面所述添加值。 我想可能有任何PHP現成的函數,因爲我已經看到PHP中有很多可用的數組處理函數。現在,我意識到沒有任何這樣的功能可用。我可以爲此做自己的自定義代碼,但正在尋找合適的邏輯解決方案。

+1

那是一個太特殊了。你只能使用foreach或array_walk或者什麼,你可以在哪裏描述你的目標......你想要一個例子還是另一種已知的方式? –

+1

1)您試圖將一個*二維*數組轉換爲*一維*一個。 2)請*表明*您想要**按鍵求和**值;不要讓我們猜測。 – deceze

+0

因此,結論是沒有任何內置功能...我解決了自定義功能的問題....謝謝你的幫助...謝謝你的負面觀點也... – mohitesachin217

回答

1

沒有內建函數,但它是一個簡單的foreach循環。假設你的數組存儲在變量$ arr中;

$return = array(); 
foreach ($arr as $a) { 
    $return[$a[0]] += $a[1]; 
} 
echo "<pre>"; print_r($return); 

如果您呼叫多次,那麼你可以很容易地編寫自己的功能

$arr[0]= array(17,111); 
$arr[1]= array(17,10); 
$arr[2]= array(20,111); 

$return = subArr($arr); 
echo "<pre>"; print_r($return); 

function subArr($arr) { 
    $result = array(); 
    foreach ($arr as $a) { 
     $result[$a[0]] += $a[1]; 
    } 
    return $result; 
}