компилятор ругается
попытался решить задачу не получилось, компилятор ругается,условия задачи: Создайте функцию с названием countBasket, с одним параметром - массив позиций в корзине.
Функция должна посчитать и вернуть сколько всего в корзине товаров (в одной позиции корзины может быть несколько товаров - поле quantity).
В вашу функцию будут передавать массив следующей структуры:
task_1_08.png количество позиций в корзине может быть от 0 до 10
function countBasket($array = []): int
{
$total = 0;
foreach ($array as $value) {
if ($value['quantity'] < 10) {
$total += $value['quantity'];
}
}
return $total;
}
$basket = [
[
'position' => 'книга по php',
'quantity' => 1,
],
[
'position' => 'Мышь беспроводная',
'quantity' => 12,
],
];
echo countBasket($basket);
Ошибка: Критическая ошибка выполнения кода: Return value of __PHPSandbox_b1b852e9972fcd749c8b2ba12169366e\countBasket() must be of the type integer, none returned
Ответы (1 шт):
Ваш код, но уже отформатирован:
<?php
function countBasket($array = []): int
{
$total = 0;
foreach ($array as $value) {
if ($value['quantity'] < 10) {
$total += $value['quantity'];
}
return $total;
}
}
И вот, сразу видно, что:
- При пустом входящем массиве функция ничего не вернёт
- Функция возвращает не общее количество элементов, а количество первого элемента, меньшее 10 либо 0.
А так же, стоит заметить, что 10 по условию задачи тоже должно быть включено.
А теперь просто выносим строку return из цикла...
<?php
function countBasket($array = []): int
{
$total = 0;
foreach ($array as $value) {
if ($value['quantity'] <= 10) {
$total += $value['quantity'];
}
}
return $total;
}
... и код становится рабочим!
PS. Вы зря недооцениваете важность форматирования кода, его не зря придумали и вводят стандарты...