Есть ли синтаксис, который выбирает истинную переменную из другой? - PullRequest
3 голосов
/ 01 марта 2012

Позвольте мне объяснить это подробнее, поэтому я склонен делать что-то вроде:

$foo = "";
$bar = "This is not empty"

if($foo){
  $str = $foo;
}else{
  $str = $bar;
}

magic($str)

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

Итак, я попробовал:

magic($foo OR $bar)

К сожалению, это фактически сравнивает две переменные и возвращает 1 вместо самой действительной истинной переменной.

По сути, мне нужен синтаксис, который проверяет, пуста ли первая переменная, а затем возвращает вторую.

Ответы [ 4 ]

5 голосов
/ 01 марта 2012

Да, в PHP 5.3 или более поздней версии используйте новую версию троичного оператора:

$str = $foo ?: $bar;

Если вам нужно поддерживать PHP 5.2 или более раннюю версию, вам придется использовать чуть более подробный

$str = $foo ? $foo : $bar;

См. http://php.net/manual/en/language.operators.comparison.php

Обратите внимание, что ни эти, ни ваши if($foo){ $str = $foo; } else{ $str = $bar; } не проверяют значение $bar, заголовок вашего вопроса не совсем соответствует телу.

Если у вас есть несколько элементов, и вы хотите удалить пустые, вы можете использовать array_filter, например:

array_filter(array($foo, $bar, $baz));

3 голосов
/ 01 марта 2012

Одним из способов является использование троичного оператора, например:

$str = $foo ? $foo : $bar;

Это сокращенный код вашего кода:

if($foo){
  $str = $foo;
}else{
  $str = $bar;
}

Еще короче:

$str = $foo ?: $bar;

$str будет равно $foo или $bar, в зависимости от того, что верно.

1 голос
/ 01 марта 2012

Можете ли вы сделать это:

magic($foo ?  $foo : $bar);
0 голосов
/ 01 марта 2012

Мне нравится использовать троичные операторы, например, так:

$str = ( $foo ) ? $foo : $bar;

Это установит $str в $foo, если оно не пустое, и $bar, если оно есть.Это может быть не так просто, как вы ищете, но для меня это выглядит чище.

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