Оператор с «или» работает, потому что PHP-интерпретатор достаточно интеллектуален: поскольку соединение «или» имеет значение true, если первое из них истинно, он прекращает выполнение оператора, когда первыйправда.
Представьте себе следующий (PHP) код:
function _true() { echo "_true"; return true; }
function _false() { echo "_false"; return false; }
теперь вы можете связывать вызовы функций и видеть в выходных данных, что происходит:
_true() or _true() or _true();
скажет вам только«_true», поскольку цепочка заканчивается после того, как первый из них был истинным, остальные два никогда не будут выполнены.
_false() or _true() or _true();
выдаст "_false_true", потому что первая функция возвращает false, а интерпретатор продолжается.
То же самое работает с "и"
Вы также можете сделать то же самое с "и", с той разницей, что цепочка "и" законченакогда произойдет первое «ложь»:
_false() and _true() and _true();
отобразит «_false», потому что там результат уже завершен и больше не может быть изменен.
_true() and _true() and _false();
напишет "_true_true_false".
Поскольку большинство функций показывают свой успех, возвращая «1» в случае успеха и 0 при ошибке, вы можете делать такие вещи, как function() or die()
.Но некоторые функции (в php довольно редко) возвращают «0» в случае успеха и! = 0 для обозначения конкретной ошибки.Тогда вам, возможно, придется использовать function() and die()
.