I have an array which will have an SKU number, it can be repeated so want to sum of that SKU qty at once and insert in DB table.
`$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
)`
How can i sum the same sku as index 1 and 3 have and remove the 1st index?
CodePudding user response:
Using the solution on this Answer
here is how to do it:
$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);
The result is:
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
)
)