Сократите способ проверки нескольких переменных, если они пусты - PullRequest
4 голосов
/ 24 мая 2019

Я проверяю 11 переменных, если они пусты, и на основании этого добавляет значение в массив. Переменные не находятся в массиве, и я хотел бы сохранить их, если это возможно.

if (!empty($var1)) {
  $Data[] = $var1;
} else {
  $Data[] = ' - ';
}

if (!empty($var2)) {
  $Data[] = $var2;
} else {
  $Data[] = ' - ';
}

if (!empty($var3)) {
  $Data[] = $var3;
} else {
  $Data[] = ' - ';
}

Есть ли лучший / более короткий способ сделать это?

Ответы [ 2 ]

4 голосов
/ 24 мая 2019

Вы можете использовать троичные операторы

Лучше всего было бы перебрать вашу переменную , если вы можете сделать это так:

Использование троичного оператора:

$variables = [ $var1, $var2, $var3 ]
foreach ($variables as $var){
    $Data[] = !empty($var) ? $var: ' - ';
}

Использование оператора if / else:

$variables = [ $var1, $var2, $var3 ]
foreach ($variables as $var){
    if( !empty($var) ){
        $Data[] = $var;
    }else{
        $Data[] = ' - ';
    }

}

Но если вы не можете и все еще хотите сделать это индивидуально для каждой переменной:

$Data[] = !empty($var1) ? var1 : ' - ';
$Data[] = !empty($var2) ? var1 : ' - ';
$Data[] = !empty($var3) ? var1 : ' - ';
2 голосов
/ 24 мая 2019

Если переменные названы в такой последовательности, вы можете зациклить их, используя переменные переменные.

$i = 1;
while(isset(${"var" . $i})){ 
    if (!empty(${"var" . $i})) 
    {
        $Data[] = ${"var" . $i};
    } else {
        $Data[] = ' - ';
    }
    $i++;
}

Это означает, что вам не нужно добавлять их вручную в массив, как это делает принятый ответ, и если когда-нибудь придет $var12, тогда этот код добавит это автоматически.

См. Код в действии:
https://3v4l.org/240kA

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