символ — Как насчет метода var_dump ($ x) в переполнении стека

Кстати, я удивлен этим
Что будет выводить этот код и почему?

$x = true and false;
var_dump($x);

-1

Решение

Удивительно для многих, приведенный выше код будет выводить bool (true), по-видимому, означая, что and Оператор ведет себя вместо этого как or,

Проблема здесь в том, что оператор = имеет приоритет над оператором и в порядке операций, поэтому оператор $x = true и ложь оказывается функционально эквивалентной:

$x = true; // устанавливает $ x равным true
правда и ложь; // приводит к ложному, но ни на что не влияет
Это, кстати, отличный пример того, почему использование скобок для четкого указания ваших намерений, как правило, является хорошей практикой на любом языке. Например, если приведенное выше утверждение $x = true и ложные были заменены на $x = (true and false), затем $x будет установлен в ложь, как ожидалось.

5

Другие решения

Как объяснил Вот, = оператор имеет более высокий приоритет, чем and оператор, вызывающий $x = true оценить раньше true and false означает, что $x примет значение true,

Это даст вам то, что вы хотите:

$x = (true and false);
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector