@mondeoclub

Как продолжить цикл?

Я начинающий, не судите строго.
Есть функция которая может принимать неопределенное количество аргументов.

//проверка на пустоту
    public function required(...$types)
    {
        foreach ($types as $type ) {
            if (!mb_strlen($type) == 0) {
                return true;
            }else {
                return false;
            }
        }
    }

Когда я передаю больше одного аргумента, она находит первый аргумент и возвращает true.

if ($users->required($_POST['login'], $_POST['name'])) {
                echo 'Ok';
            }else {
                echo 'No';
            }


Вот и вопрос, как сделать что бы возвращало true только в том случае, если верны все аргументы?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
Shev_Art_V
@Shev_Art_V
Занимаюсь разработкой сайтов на Modx Revolution
return прерывает цикл, значит надо просто завести переменную которая в зависимости от результатов проверки будет принимать значение true или false.
$bool = true;
        foreach ($types as $type ) {
            if (mb_strlen($type) == 0) {
                bool= false;
            }
        }

Соответственно, на выходе, если хотя бы один аргумент будет длиной 0, получим false, а если все аргументы имеют длину больше 0, то получим true.
Ответ написан
sergiks
@sergiks Куратор тега PHP
♬♬
public function required(...$types)
{
    return array_reduce($types, function($carry, $item) {
        return !empty($item) && $carry;
    }, true);
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
LAPTOP.RU Москва
от 150 000 до 190 000 ₽
LAPTOP.RU Кострома
от 25 000 до 65 000 ₽
LAPTOP.RU Москва
от 130 000 до 170 000 ₽
08 мар. 2021, в 10:02
75000 руб./за проект
08 мар. 2021, в 10:00
700 руб./за проект
08 мар. 2021, в 08:37
3000 руб./за проект