оператор foreach не проверяет все условия

Я новичок в PHP. Я пытаюсь проверить, что ни одно поле не является пустым в определенной форме, поэтому я использовал foreach заявление, но оно проверяет только один за другим, а не все сразу.

Вот мой код:

<?php

if (isset($_POST[submit])) {
ValidateUser();
}

function ValidateUser() {
$username = $_POST['username'];
$password = $_POST['password'];
$details = array($username, $password);

foreach($details as $detail) {
if (!empty($detail)) {
echo "hurrayy";
}
}
}

?>

Таким образом, вместо отображения «ура», когда ОБА имя пользователя и пароль не пусты, он отображается, пока один из них не пуст. Пожалуйста помоги.

0

Решение

Вам не нужно присваивать их массиву и циклу

function ValidateUser() {
if(!empty($_POST['username']) AND !empty($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
echo "Hurray!";
}
}

8 строк до 5, без цикла и без присвоения массива.

1

Другие решения

Добавить break после того, как сообщение было повторено один раз. Это остановит foreach петля.

foreach($details as $detail) {
if (!empty($detail)) {
echo "hurrayy";
break;
}
}
1

Таким образом, вы хотите отобразить «ура», только если никто из полей в массиве пусты? Вы должны сначала проверить их все, а затем решить.

function ValidateUser() {
$username = $_POST['username'];
$password = $_POST['password'];
$details = array($username, $password);

$empty_field = false;

foreach($details as $detail) {
if (empty($detail)) {
$empty_field = true;
}
}

if (!$empty_field)
echo "hurrayy";
}
0

да, это будет входить в утверждение, потому что $username а также $password рассматривается как значение в массиве, даже если эти два не имеют значения.

0
По вопросам рекламы [email protected]