- array_sum: documentation ( source)
- array_column: documentation ( source)
- microtime: documentation ( source)
- array_filter: documentation ( source)
- array_unique: documentation ( source)
<?php
$items = [];
for ($i = 0; $i < 3000; $i++) {
$items[] = [
'foo' => 1,
'qty' => ($i%7)+1,
'bar' => 2,
'weight' => ($i%2)+1,
'baz' => 3,
];
}
$start =microtime(1);
$weights =array_unique(array_column($items, 'weight'));
$result =[];
Foreach($weights as $weight){
$weightitems = array_filter($items, function ($var) use ($weight) {
return ($var['weight'] == $weight);
});
$result[] = array_sum(array_column($weightitems, "qty")) * $weight;
}
Echo array_sum($result) ."\n";
Echo (microtime(1)-$start)*100;