如何通过这些键对laravel中的关联数组求和



我有一个数组,它将有一个SKU编号,它可以重复,所以希望一次求和该SKU数量,并插入DB表中。

`$data = array(
0 => array(
'0' => 'SKU',
'1' => 'header1',
'2' => 'header2',
'3' => 'qty'
),
1 => array(
'0' => 'SKU-abc',
'1' => 50,
'2' => 0,
'3' => 50
),
2 => array(
'0' => 'SKU-pqr',
'1' => 50,
'2' => 0,
'3' => 50
),
3 => array(
'0' => 'SKU-abc',
'1' => 0,
'2' => 25,
'3' => 25
)`

如何求和索引1和3的相同sku,并删除第一个索引?

在此应答上使用解决方案

以下是操作方法:

$data = array(
0 => array(
'0' => 'SKU',
'1' => 'header1',
'2' => 'header2',
'3' => 'qty'
),
1 => array(
'0' => 'SKU-abc',
'1' => 50,
'2' => 0,
'3' => 50
),
2 => array(
'0' => 'SKU-pqr',
'1' => 50,
'2' => 0,
'3' => 50
),
3 => array(
'0' => 'SKU-abc',
'1' => 0,
'2' => 25,
'3' => 25
));
$res  = array();
foreach($data as $vals){
if(array_key_exists($vals['0'],$res)){
$res[$vals['0']]['1']   += $vals['1'];
$res[$vals['0']]['2']   += $vals['2'];
$res[$vals['0']]['3']   += $vals['3'];
$res[$vals['0']]['0']    = $vals['0'];
}
else{
$res[$vals['0']]  = $vals;
}
}
print_r($res);

结果是:

Array
(
[SKU] => Array
(
[0] => SKU
[1] => header1
[2] => header2
[3] => qty
)
[SKU-abc] => Array
(
[0] => SKU-abc
[1] => 50
[2] => 25
[3] => 75
)
[SKU-pqr] => Array
(
[0] => SKU-pqr
[1] => 50
[2] => 0
[3] => 50
)
)

最新更新