Как перебрать список переменных и проверить, не являются ли их значения пустыми в php - PullRequest
0 голосов
/ 17 марта 2019

Добрый день, я пытаюсь проверить, не является ли значение некоторых переменных, переданных из ajax, пустым. Я проверил это в jQuery (ajax), но пытался добавить только дополнительный слой в php, чтобы проверить, не являются ли значения $ _POST пустыми. Ниже приведены переменные;

$_smChest           = wp_strip_all_tags( $_POST['send_smChest'] );
$_smSleeve          = wp_strip_all_tags( $_POST['send_smSleeve'] );
$_smShoulder        = wp_strip_all_tags( $_POST['send_smShoulder'] );
$_smJacketLength    = wp_strip_all_tags( $_POST['send_smJacketLength'] );
$_smArmHole         = wp_strip_all_tags( $_POST['send_smArmHole'] );
$_smBicep           = wp_strip_all_tags( $_POST['send_smBicep'] );
$_smStomach         = wp_strip_all_tags( $_POST['send_smStomach'] );
$_smFrontWidth      = wp_strip_all_tags( $_POST['send_smFrontWidth'] );
$_smBackWidth       = wp_strip_all_tags( $_POST['send_smBackWidth'] );
$_smWaistBand       = wp_strip_all_tags( $_POST['send_smWaistBand'] );
$_smPantsLength     = wp_strip_all_tags( $_POST['send_smPantsLength'] );
$_smSeat            = wp_strip_all_tags( $_POST['send_smSeat'] );
$_smStride          = wp_strip_all_tags( $_POST['send_smStride'] );
$_smthighs          = wp_strip_all_tags( $_POST['send_smthighs'] );
$_smKnee            = wp_strip_all_tags( $_POST['send_smKnee'] );
$_smLegOpening      = wp_strip_all_tags( $_POST['send_smLegOpening'] );
$_smJacketFit       = wp_strip_all_tags( $_POST['send_smJacketFit'] );
$_smTrouserFit      = wp_strip_all_tags( $_POST['send_smTrouserFit'] );

Я видел этот вопрос (PHP Проверьте, все ли переменные пусты) и использовал этот код, чтобы проверить, не являются ли значения переменных не пустыми;

$user = wp_get_current_user();
if (!empty($_POST)) {
    foreach ($_POST as $value) {
        if (!empty($value)) {
          //Then Updated the users profile with the value and echo 1 for Ajax Response
           update_user_meta( $user->ID, 'sm_chest', $_smChest);
           update_user_meta( $user->ID, 'sm_sleeve', $_smSleeve);
           update_user_meta( $user->ID, 'sm_shoulder', $_smShoulder);
           update_user_meta( $user->ID, 'sm_jacket_length', $_smJacketLength);
           //(...)
           echo '1';
        }else {
          // echo '0' for Ajax response
          echo '0';
        }
    }
}

Когда я делал это таким образом, обновлялся профиль пользователя, что нормально, но ответ ajax был 11111111111111111110 вместо 1 [см. Изображение ниже]

enter image description here

Я знаю, что могу использовать что-то подобное [приведенный ниже код], но оператор if будет очень длинным. Вот почему я ищу более оптимизированный подход

if (!empty($_smChest) && !empty($_smSleeve) && !empty($_smShoulder) && !empty($_smJacketLength) && //(...) ) {
    //Then Updated the users profile with the value and echo 1 for Ajax Response
    update_user_meta( $user->ID, 'sm_chest', $_smChest);
    update_user_meta( $user->ID, 'sm_sleeve', $_smSleeve);
    update_user_meta( $user->ID, 'sm_shoulder', $_smShoulder);
    update_user_meta( $user->ID, 'sm_jacket_length', $_smJacketLength);
    //(...)
       echo '1';
}else {
    echo '0';
}

Не уверен, что я делаю неправильно или почему я получаю много 1s и 0.

То, чего я хотел бы достичь, это;
1. Просмотрите все значения каждой переменной и убедитесь, что ни одно из них не пустое;
2. Сделайте ответный ответ 1 или 0, если значения не пусто или пусто соответственно

Высоко ценится идея о том, что я могу сделать по-другому, чтобы сделать эту работу.

1 Ответ

2 голосов
/ 17 марта 2019

Вы выводите 1 для каждого обновленного элемента, вам может потребоваться решить, каким образом вы хотите генерировать вывод, но что-то вроде. Это устанавливает значение равным '1' и сбрасывает его на '0', если какой-либо элемент пуст ...

$user = wp_get_current_user();
$ok = '1';
if (!empty($_POST)) {
    foreach ($_POST as $value) {
        if (!empty($value)) {
          //Then Updated the users profile with the value and echo 1 for Ajax Response
           update_user_meta( $user->ID, 'sm_chest', $_smChest);
           update_user_meta( $user->ID, 'sm_sleeve', $_smSleeve);
           update_user_meta( $user->ID, 'sm_shoulder', $_smShoulder);
           update_user_meta( $user->ID, 'sm_jacket_length', $_smJacketLength);
        }else {
          // echo '0' for Ajax response
          $ok = '0';
        }
    }
}
echo $ok;

Таким образом, будет выведено 0, если ЛЮБОЕ из полей пусто. Вместо этого вы можете захотеть, чтобы он выводил 1, если установлен какой-либо элемент. Вам нужно будет установить его на 0, чтобы запустить и изменить логику (т.е. установить $ok, если ветвь if (!empty($value)) {.

Третий вариант - сделать логику для проверки того, что у полей установлены значения, НО переместить логику обновления во второй цикл, который вызывается только тогда, когда все поля не проверены как не пустые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...