2017-02-10 20 views
1

私はこのような配列を持っています。 同じ配列キーを持つすべての要素の合計を求めようとしています。同じ配列キーを持つすべての要素の合計を見つける際のphp-エラー

予想される出力:Array ([JOHN] => 25000 [SMITH] => 13000 [ALEX] => 40000 [JAMES] => 16000 [ANTONY] => 28000)

しかし、私は取得していますが異なるものです。私は取得しています

$amounts = array('JANUARY' => array('JOHN' => array(2000, 5000, 3000), 'SMITH' => array(2000, 1000, 1000, 6000)), 'FEBRUARY' => array('ALEX' => array(5000, 7000, 4000), 'JAMES' => array(4000, 1000, 3000, 2000)), 'MARCH' => array('ANTONY' => array(7000, 2000, 4000), 'JOHN' => array(3000, 5000, 6000, 1000)), 'APRIL' => array('ANTONY' => array(2000, 4000, 6000, 3000), 'ALEX' => array(7000, 8000, 9000)), 'MAY' => array('SMITH' => array(1000, 2000), 'JAMES' => array(2000, 3000, 1000))); 


foreach($amounts as $key => $value) 
{ 
    $sum=array(); 
    foreach($value as $key1 => $value1) 
    { 
     $sum[$key1] = array_sum($value1); 

    } 
    print_r($sum); 
} 

出力は次のとおりです。

Array 
(
    [JOHN] => 10000 
    [SMITH] => 10000 
) 
Array 
(
    [ALEX] => 16000 
    [JAMES] => 10000 
) 
Array 
(
    [ANTONY] => 13000 
    [JOHN] => 15000 
) 
Array 
(
    [ANTONY] => 15000 
    [ALEX] => 24000 
) 
Array 
(
    [SMITH] => 3000 
    [JAMES] => 6000 
) 

予想される出力:Array ([JOHN] => 25000 [SMITH] => 13000 [ALEX] => 40000 [JAMES] => 16000 [ANTONY] => 28000)

+0

ご期待出力されるいただきました? –

+0

配列([JOHN] => 25000 [SMITH] => 13000 [ALEX] => 40000 [JAMES] => 16000 [ANTONY] => 28000)@M A SIDDIQUI –

答えて

1

が、これはあなたが何をしたいですか?

$amounts = array('JANUARY' => array('JOHN' => array(2000, 5000, 3000), 'SMITH' => array(2000, 1000, 1000, 6000)), 'FEBRUARY' => array('ALEX' => array(5000, 7000, 4000), 'JAMES' => array(4000, 1000, 3000, 2000)), 'MARCH' => array('ANTONY' => array(7000, 2000, 4000), 'JOHN' => array(3000, 5000, 6000, 1000)), 'APRIL' => array('ANTONY' => array(2000, 4000, 6000, 3000), 'ALEX' => array(7000, 8000, 9000)), 'MAY' => array('SMITH' => array(1000, 2000), 'JAMES' => array(2000, 3000, 1000))); 

$sum=array(); 
foreach($amounts as $key => $value) 
{  
    foreach($value as $key1 => $value1) 
    { 
     //check key set or not. if not set then assign value 0. so that you dont get undefine index error 
     if(!isset($sum[$key1])) 
      $sum[$key1] = 0; 
     $sum[$key1] += array_sum($value1); 

    }  

} 
print_r($sum); 
1

あなたの試みが近くにあり、ちょうどこの変更が必要:

//initialise this before foreach, so that it doesn't gets reset in between. 
$sum=array(); 
foreach($amounts as $key => $value) { 
    foreach($value as $key1 => $value1) { 
    //Add the previous sum too, so that it doesn't calculate the new sum 
    if(!array_key_exists($key1, $sum)) { 
     $sum[$key1] = 0; 
    } 
    $sum[$key1] += array_sum($value1); 
    } 
} 
//Debug this at the last and not inside the loop. 
print_r($sum); 
関連する問題