Я новичок в 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";
}
}
}
?>
Таким образом, вместо отображения «ура», когда ОБА имя пользователя и пароль не пусты, он отображается, пока один из них не пуст. Пожалуйста помоги.
Вам не нужно присваивать их массиву и циклу
function ValidateUser() {
if(!empty($_POST['username']) AND !empty($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
echo "Hurray!";
}
}
8 строк до 5, без цикла и без присвоения массива.
Добавить break
после того, как сообщение было повторено один раз. Это остановит foreach
петля.
foreach($details as $detail) {
if (!empty($detail)) {
echo "hurrayy";
break;
}
}
Таким образом, вы хотите отобразить «ура», только если никто из полей в массиве пусты? Вы должны сначала проверить их все, а затем решить.
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";
}
да, это будет входить в утверждение, потому что $username
а также $password
рассматривается как значение в массиве, даже если эти два не имеют значения.