@max10043

Как проверить значение в массиве если он пустой?

Имеется задача:
Написать функцию, которая принимает массив, а возвращает сумму его элементов. Если передан не массив, либо в нём нет элементов, либо некоторые элементы не являются числами, то должно возвращаться false.
Все прекрасно работает, но если оставить значение пустым, то все равно отображается 0, в чем проблема?
<?php
$my = [];
function sum_ar($arr)
{
        $sum = 0;
        foreach ($arr as $value)
        {
            if (is_array($arr) && (is_int($value) && !is_null($value)))
            {
                $sum += $value;
            }
            else
            {
                return false;
            }
        }
        return $sum;
 }
echo sum_ar($my);
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Vitsliputsli
У вас нет проверки на пустой массив, поэтому возвращает 0. Не хватает проверки на float, на null уже нет смысла проверять, а проверять на массив не нужно при каждой итерации.
Т.е. что-то вроде этого должно быть:
function sum($arr)
{
    if (!is_array($arr) || count($arr)===0) {
        return false;
    }
    $sum = 0;
    foreach ($arr as $value) {
        if (!is_int($value) && !is_float($value)) {
            return false;
        }
        $sum += $value;
    }
    return $sum;
}
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Ну добавьте условие на !empty($arr)ещё
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект