Что значит &&! в PHP?


Я пытаюсь узнать это, но появляется в любом месте. Имеет пробел между && и !.

if ( is_home() && ! is_front_page() )
Author: Maniero, 2017-06-24

2 answers

Пробелы, как правило, не делают разницы код. По крайней мере, в PHP почти всегда нет. То, что это жаль, потому что программисты делают зверства и делают код менее читаемым, не согласованы. Более или менее, как это делают с естественного языка. В частности, я написал бы так:

if (is_home() && !is_front_page())

Становится более очевидным associatividade. Жаль, что если переусердствовать в этом, может быть хуже.

! (not), отрицая результат is_front_page(), который должен быть boolean или кости, которая может быть представлена как логическое значение, например, 0 или другое значение.

, Как это унарный будет связан на то, что находится справа, и он имеет приоритет.

Оператор && (and) - это двоичный файл, и поэтому он применяется в выражения слева и справа от него. Он имеет более высокий приоритет, меньше not, тогда будут работать, если приоритет будет больше, чтобы получить тот же результат, придется сделать:

is_home() && (!is_front_page()))

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

, То это выражение каждый нуждается в том, что первый метод возвращает true, а второй возвращает false, так что он будет перевернуто, там условия все if будет истинной и будет выполнять блок кода него.

В вопросе о приоритете linkada выше, больше информации о o and. Имеет о not JavaScript , точно так же это работает.

Очевидно, что если написать &&!, будет другой оператор, не имеет, как компилятор знает, что это два, и как этот оператор не имеется, даст ошибку. Это точка, где пространство является критическим. Теоретически компилятор может знать, потому что этот оператор не существовало, он мог бы понять, что это два известных операторов, что остался без места. Но выходит, что в один прекрасный день вы хотите создать сотовой &&! по какой-то причине не мог, потому что он будет интерпретироваться по-разному в некоторых ситуациях. Лучше избегать.

 12
Author: Maniero, 2020-05-26 18:01:14

Это:

if (is_home() && ! is_front_page())

То же самое, как это:

if (is_home() && !(is_front_page()))

То есть, за счет " !, состояние только будет истинной, если is_home() возвращает true и is_front_page() возвращает ложь.

 1
Author: Antonio Neto, 2017-06-29 13:15:49