В PHP вы можете использовать || (или) так же, как JavaScript? - PullRequest
2 голосов
/ 06 июля 2011

Могу ли я использовать аргумент OR таким образом в PHP? То есть, если $ x равен нулю, присвойте $ y переменной $ var.

$var = $x || $y

Простой вопрос, ура!

Ответы [ 4 ]

8 голосов
/ 06 июля 2011

Нет.Булевы операторы PHP оценивают как true или false, а не значение операндов, как в Javascript.Таким образом, вам придется написать что-то вроде этого:

$var = $x ? $x : $y;

Начиная с версии 5.3, вы можете написать это, хотя, что в основном имеет тот же эффект, что и Javascript ||:

$var = $x ?: $y;

Для этого требуется, чтобы $x существовал, в противном случае вам следует сначала проверить isset.

3 голосов
/ 06 июля 2011

Нет, таким образом вы присваиваете логическое значение для $var

$var = $x or $y;

означает: $var равно true, если $x или $y.Вы ищете троичный оператор

$var = isset($x) ? $x : $y;
// or
$var = empty($x) ? $y : $x;

Тернарный оператор всегда работает как

$var = $expressionToTest
     ? $valueIfExpressionTrue
     : $valueIfExpressionFalse

С PHP5.3 или новее вы можете опустить $valueIfExpressionTrue

$var = $expressionToTest ?: $valueIfExpressionFalse;
1 голос
/ 06 июля 2011
$x=0;
$y=9;
$var = ($x)?$x:$y;

echo $var;

если переменная x равна нулю, тогда var будет 9, иначе это будет значение x.

0 голосов
/ 06 июля 2011

На этот вопрос уже дан ответ, но я хотел бы обратить ваше внимание на другое использование OR и AND операторов в PHP

defined('SOMETHING') OR define('SOMETHING', 1);

, если этот случай, если SOMETHINGне определено (defined('SOMETHONG') оценивается в false) выражение после OR будет оценено

$admin AND show_admin_controls();

, если $admin оценено как логическое true, будет вызвана show_admin_controls() функция

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

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