2017-12-22 11 views
-6

私は以下のタイプの配列を持っています。
入力配列からどのように出力を得ることができますか?
注:配列はdynamaic
です。comp_sizeと同じproduct_idの合計が必要です。前もって感謝します。
入力配列同じ製品の配列の合計値

array:4 [ 
    0 => array:3 [ 
    "comp_size" => "4.5" 
    "comp_id" => "10" 
    "product_id" => "1" 
    ] 
    1 => array:3 [ 
    "comp_size" => "4.5" 
    "comp_id" => "11" 
    "product_id" => "2" 
    ] 
    2 => array:3 [ 
    "comp_size" => "4.5" 
    "comp_id" => "12" 
    "product_id" => "2" 
    ] 
    3 => array:3 [ 
    "comp_size" => "4.5" 
    "comp_id" => "13" 
    "product_id" => "2" 
    ] 
] 

望ましい結果:

[ 
    0 => array [ 
     product_id => 1 
     total_size => 4.5 
    ] 
    1 => array[ 
     product_id => 2 
     total_size => 13.5 
    ] 
] 
+0

あなたはmysqlクエリの合計または配列の合計を意味しましたか? –

+0

@EtibarRustemzadeはい入力配列はmysqlから来て、希望する配列 – Knuks

+0

に従ってこの配列を欲しいですか?値を合計するか? – RamC

答えて

0

あなたがこれを行うことができますgroupByおよびmapラーベルスの機能Collection

$collection = new \Illuminate\Support\Collection($array); 
$group = $collection->groupBy('product_id'); 
$resultArray = $group->map(function($item, $key) { 
      return [ 
       'total_size' => $item->sum('comp_size'), 
       'product_id' => $key, 
      ]; 
     }); 

これにより、将来コードを少し簡単に拡張できます。

+1

ありがとう – Knuks

0

は、サイズの値を合計し、配列のすべての要素をループ、これを試してみてください:

<?php 

$data = [] // original array; 
$sum = [] // result; 

foreach ($data as $dt) { 
    if (!isset($sum[$dt['product_id']])) { 
     $sum[$dt['product_id']] = 0; 
    } 

    $sum[$dt['product_id']] += $dt['comp_size']; 
} 

?> 
+0

ありがとう@cludio – Knuks

関連する問題