Проверить, имеет ли значение переменной противоположный путь? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть PHP-заявление if, которое я пытаюсь реализовать.Я знаю, каков результат, но я не видел этого раньше (вероятно, мой плохой).Кто может помочь мне понять код ниже?Почему отображается $a, а не $b?Потому что $a стоит первым?

<?php
$a = 'has a value';
$b = 'this one too!';
if (($href = $a) || ($href = $b)) { 
    echo $href;
    //Result is 'has a value'.  
}
?>

1 Ответ

0 голосов
/ 06 февраля 2019

|| использует оценку "короткого замыкания".Если первая часть выражения верна, то вторая часть не будет оценена.В PHP

Значением выражения присваивания является присвоенное значение.

( цитируется из = документации )

, поэтому в этом случае выражение ($href = $a) имеет значение присвоенного значения, 'has a value'.Эта строка имеет значение true (см. « преобразование в логическое значение »), поэтому второе назначение не будет выполнено.


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

if ($href = $a ?: $b) { 
    echo $href;
}
...