2016-10-14 8 views
2

私はデータベースからの結果を持っています。PHPの合計配列

Array 
(
    [0] = stdClass Object 
    (
     [name] = First 
     [sum] = 3,8,... 
    ) 

    [1] = stdClass Object 
    (
     [name] = Second 
     [sum] = -1,0,... 
    ) 

    [2] = stdClass Object 
    (
     [name] = Third 
     [sum] = 2,-1... 
    ) 

) 

は、だから今はcolomn に "合計"をすべてを合計する必要があります。

は、私は(爆発を投げる私が変えた

$final = (4, 7,...); 

よう配列への合計結果を取得する必要があります)、その後

example`

foreach ($result as $k=>$subArray) { 
    $arrayNumbers = explode(",",$subArray->sum); 

    foreach ($arrayNumbers as $key => $value) { 
    $sumArray[] = $value]; 
    $stepToSum2[] = array_sum($sumArray); 

    } 
    unset($arrayNumb); 
} 

のためのforeach

てみました私の例は、私はすでにコメントされたコードに固執しているので、動作しているかどうかはわかりません。

とにかく、最初の数字(5)または配列(11)の合計を取得または合計することができます。

この

$sum = array_sum(array_map(function($var) { 
    return $var['sum']; 
}, $myResultArray)); 

私は答えを検索しましたが、たった2つの配列のための答えのほとんどは、同じテーブルに、私は5つの以上の配列を持っていると同じ結果なので、私は理解できませんこれを実装する方法を説明します。

ありがとうございました。

+0

は常にあなたのデータベース内の合計属性に同じ構造を持っていますか? – Cristian

+0

番号1、番号2? – Cristian

+0

または行ごとにx個の数字がある可能性があります – Cristian

答えて

4

array_reduceはあなたがここでやっているように、単一の値に配列を低減させるために良いです。あなたの配列の各項目の "キャリー"値を更新する配列と関数をとります。

$result = array_reduce($your_array, function($carry, $item) { 
    foreach (explode(',', $item->sum) as $key => $value) { 
     $carry[$key] = $value + (isset($carry[$key]) ? $carry[$key] : 0); 
     // (OR $carry[$key] = $value + ($carry[$key] ?? 0); in PHP 7) 
    } 
    return $carry; 
}, []); 
+0

SUMの2つの数字だけですか? – dkruchok

+0

私の和は、Σ=> 3.96,8.24,11.64,14.79,16.16,17.38,17.85,18.28,18.28 – dkruchok

+0

のように見えます。はい、それはちょうど2つです。私はあなたの質問に表示されたものに基づいていますが、私はそれがより多くのために働く方法を示すためにそれを更新することができます。 –

0

これを試してみてください:

foreach ($result as $k => $subArray) { 
    $arrayNumbers = explode(",",$subArray->sum); 

    foreach ($arrayNumbers as $key => $value) { 
     $sumArray[$key] = isset($sumArray[$key]) ? $sumArray[$key] : 0; 
     $sumArray[$key] += $value; 
    } 
} 
print_r($sumArray); 
1

あなたはすでに、配列を作成しているので:

foreach ($result as $subArray) { 
    $arrayNumbers[] = explode(",", $subArray->sum); 
} 

$first = array_sum(array_column($arrayNumbers, 0)); 
$second = array_sum(array_column($arrayNumbers, 1));