Есть ли способ не использовать! Empty три раза в PHP? - PullRequest
3 голосов
/ 18 января 2012

Я хочу сделать заявление if.Если массивы $list[0], $list[1] и $list[2] не пусты, то мне достаточно, чтобы я мог с ними справиться.

if(!empty($list[0]) AND !empty($list[1]) AND !empty($list[2])){
// do something
}else{
// output error and redirect
}

Есть ли другой способ сократить приведенный выше оператор if?Или это достаточно хорошо?

Ответы [ 8 ]

6 голосов
/ 18 января 2012

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

2 голосов
/ 18 января 2012

Если вы беспокоитесь о работе с общим случаем (массивами любой длины), тогда лучше использовать метод foreach (), который проверяет элементы по очереди.

Если вы имеете дело с конкретным случаем, когда вы всегда ожидаете 3 элемента, то то, что вы делаете, хорошо.

0 голосов
/ 18 января 2012

Вы можете сначала отфильтровать свой массив, чтобы избавиться от пустых значений, так как вы, вероятно, все равно не хотите их

$list = array_filter($list);

, а затем проверить, достаточно ли у вас значений

if (count($list) > 2)
0 голосов
/ 18 января 2012

isset (...) может обрабатывать более одного параметра.
Если isset () и empty () взаимозаменяемы в вашем случае («Определите, установлена ​​ли переменная и не равна ли NULL» против http://docs.php.net/manual/en/types.comparisons.php), вы можете написать

if ( isset($list[0], $list[1], $list[2]) ) {
  ...
0 голосов
/ 18 января 2012

Код, который вы написали, прекрасно, но если вы ищете альтернативу ... вы можете сделать что-то вроде:

$none_empty = true;

foreach($list as $array) {
   if(empty($array)) {
    $none_empty = false;
    break;
   }
}

if($none_empty) {
// do something
}else{
// output error and redirect
}

Дайте мне знать, если это работает для вас;)

0 голосов
/ 18 января 2012

Остерегайтесь того, что Empty также возвращает false, когда значение равно нулю. Нам нужно больше информации о том, что $ list собирается дать более разумные ответы.

0 голосов
/ 18 января 2012

Это более простой код:

if(empty($list[0]) OR empty($list[1]) OR empty($list[2])){
// output error and redirect 
EXIT;
}

// do something
0 голосов
/ 18 января 2012

возможно ли, что если $list[0] пусто, два других также пусто?например, при импорте с помощью fgetcsv, это так.Итак, одно условие будет соответствовать.если нет, то я бы сказал, что вы все делаете правильно.

AFAIk вы можете удалить пустой, потому что NULL также рассматривается как FALSE в условиях.

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