Кстати, я удивлен этим Что будет выводить этот код и почему?
$x = true and false;
var_dump($x);
Кстати, я удивлен этим Что будет выводить этот код и почему?
$x = true and false;
var_dump($x);
Удивительно для многих, приведенный выше код будет выводить BOOL (истина), кажущаяся подразумевает, что оператор and
ведет себя вместо того, чтобы как or
.
Проблема здесь в том, что оператор = имеет приоритет над и оператором в порядке операций, так что утверждение $x = true
и ложь заканчивает тем, что функционально эквивалентно:
$x = true;
// устанавливает $ х равно истинный правда и ложь; // приводит к ложному, но не влияет на что-либо Это, кстати, отличный пример того, почему использование круглых скобок для четкого определения ваших намерений обычно является хорошей практикой на любом языке. Например, если вышеприведенный оператор $x = true
и false были заменены на $x = (true and false)
, то $x
будет установлено как ложное.
Как объяснено here, оператор =
имеет более высокий приоритет, чем оператор and
, в результате чего $x = true
оценить, прежде чем true and false
делает, а это означает, что $x
примет значение true
.
Это даст вам то, что вы хотите:
$x = (true and false);
* Что это выходной код и почему * Почему не попробовать? – Rizier123
Почему бы вам не попробовать? – Frank