相同产品的Sum数组值

时间:2017-12-22 11:28:47

标签: php arrays laravel laravel-5

我有以下类型的数组。
如何从Input数组中获得所需的输出。
注意:数组是dynamaic
想要与同一product_id的comp_size之和。提前谢谢。
输入数组

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
    ]
]

2 个答案:

答案 0 :(得分: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'];
}

?>

答案 1 :(得分:0)

您可以使用Laravel groupBy的{​​{1}}和map函数执行此操作:

Collection

这将使您将来可以更轻松地扩展代码。