2016-07-26 8 views
0

私はここで多くの答えを読みましたが、これを整理することはできませんでした。キーによる多次元配列の合計値

私はこのようになります多次元配列を持っている:

Array 

(
[0] => Array 
    (
     [0] => 
     [1] => 655 
    ) 

[1] => Array 
    (
     [0] => IT-82 
     [1] => 14 
    ) 

[2] => Array 
    (
     [0] => IT-21 
     [1] => 5 
    ) 

[3] => Array 
    (
     [0] => IT-82 
     [1] => 7 
    ) 

[4] => Array 
    (
     [0] => 
     [1] => 3 
    ) 

[5] => Array 
    (
     [0] => IT-21 
     [1] => 4 
    ) 

[6] => Array 
    (
     [0] => 
     [1] => 3 
    ) 

[7] => Array 
    (
     [0] => IT-21 
     [1] => 3 
    ) 

[8] => Array 
    (
     [0] => IT-72 
     [1] => 7 
    ) 

[9] => Array 
    (
     [0] => IT-75 
     [1] => 22 
    ) 

[10] => Array 
    (
     [0] => IT-75 
     [1] => 3 
    ) 
) 

私のような単一のアレイで終わるキーに応じた値を合計したいと思います:

で試してみました

Array 
(
     => 661 
IT-82 => 21 
IT-21 => 12 
IT-82 => 12 
IT-72 => 7 
IT-75 => 25 
) 

foreach ($array as $k=>$subArray) { 
    foreach ($subArray as $id=>$value) { 
     $sumArray[$id]+=$value; 
    } 
} 

ただし、これはすべての値の合計を返しただけです。

助けてください。

+1

配列のすべてのメンバーがキーを持っている必要があります。あなたの望む結果では、値 '661 'のキーはありません。そのような配列は存在しません。あなたのサブアレイがインデックス0に何も持っていないときに、あなたはキーとして何を使いたいですか? – BeetleJuice

+0

配列は実際に貼り付けられたように出力されます。生成されたmysqlファイルは空です。私は文字列を設定する任意の変数を適用することが完全に動作する@ JayeshChitrodaの答えに偉大になるだろう – buxbeatz

答えて

0

試してみてください。

$sumArray = array(); 
foreach ($array as $k=>$subArray) { //loop through array 
    if(isset($sumArray[$subArray[0]])) 
    $sumArray[$subArray[0]] += $subArray[1]; // set 0th index as key and 1st as value and add value to current index 
    else 
    $sumArray[$subArray[0]] = $subArray[1]; 
} 
print_r($sumArray); 

出力:

Array 
(
    [] => 661 
    [IT-82] => 21 
    [IT-21] => 12 
    [IT-72] => 7 
    [IT-75] => 25 
) 
+0

非常に速い応答をありがとう – buxbeatz

0

私はそれがあるべきとします

foreach ($array as $subArray) { 
    $sumArray[$subArray[0]] += $subArray[1]; 
} 
+0

これは本当にエレガントです。私がやっていたことよりはるかにクリーンです。配列にアクセスする前に 'if!isset then set'論理を追加しました。このコードは大きな配列に対して多くの'未定義インデックス '警告を生成するためです。 – BeetleJuice

+0

このアプローチは、より速く、よりきれいですが、実際には間違った結果をもたらします。彼らはあまりにも多くの時間を合計するかのようにはるかに高い正しいものです – buxbeatz

関連する問題