||
использует оценку "короткого замыкания".Если первая часть выражения верна, то вторая часть не будет оценена.В PHP
Значением выражения присваивания является присвоенное значение.
( цитируется из =
документации )
, поэтому в этом случае выражение ($href = $a)
имеет значение присвоенного значения, 'has a value'
.Эта строка имеет значение true (см. « преобразование в логическое значение »), поэтому второе назначение не будет выполнено.
FYI, для другого способа написать это, который немного меньшеповторяющийся, вы можете сделать это:
if ($href = $a ?: $b) {
echo $href;
}