У меня есть этот прайс-лист:
$price_canvas_001 = array_sum(array_map(function ($item) {return in_array(786, $item->product->category_ids)? (4.55 * $item->qty) + 2.45 : 0;},$request->all_items));
$price_canvas_002 = array_sum(array_map(function ($item) {return in_array(787, $item->product->category_ids)? (4.55 * $item->qty) + 2.45 : 0;},$request->all_items));
$price_canvas_003 = array_sum(array_map(function ($item) {return in_array(788, $item->product->category_ids)? (5.55 * $item->qty) + 3.45 : 0;},$request->all_items));
$price_canvas_004 = array_sum(array_map(function ($item) {return in_array(789, $item->product->category_ids)? (5.55 * $item->qty) + 3.45 : 0;},$request->all_items));
$price_canvas_005 = array_sum(array_map(function ($item) {return in_array(790, $item->product->category_ids)? (5.55 * $item->qty) + 3.45 : 0;},$request->all_items));
$price_canvas_006 = array_sum(array_map(function ($item) {return in_array(791, $item->product->category_ids)? (6.00 * $item->qty) + 5.00 : 0;},$request->all_items));
$price_canvas_007 = array_sum(array_map(function ($item) {return in_array(792, $item->product->category_ids)? (6.00 * $item->qty) + 5.00 : 0;},$request->all_items));
$price_canvas_008 = array_sum(array_map(function ($item) {return in_array(793, $item->product->category_ids)? (7.00 * $item->qty) + 6.00 : 0;},$request->all_items));
$price_canvas_009 = $price_canvas_001 + $price_canvas_002 + $price_canvas_003 + $price_canvas_004 + $price_canvas_005 + $price_canvas_006 + $price_canvas_007 + $price_canvas_008;
И я попытался сделать его более эффективным, создав этот цикл:
function granTotal(){
$category_id = array(786, 787, 788, 789, 790, 791, 792, 793 );
$increase = array(4.55, 4.55, 5.55, 5.55, 6.55, 6.00, 7.00 );
$base = array(2.45, 2.45, 3.45, 3.45, 3.45, 5.00, 5.00, 6.00 );
$length = count($category_id);
for($i=0; $i<$length; $i++){
array_sum(array_map(function ($item) {return in_array($category_id[$i], $item->product->category_ids)? ($increase[$i] * $item->qty) + $base[$i] : 0;},$request->all_items));
$total += category_id[$i];
}
return $total;
}
$total = granTotal();
echo $total;
Но он не работает. Пожалуйста, что не так?