Кто-нибудь может объяснить мне это странное поведение «идентичного» оператора в php?
$any_integer_but_not_one = -1;
var_dump( !$any_integer_but_not_one === 1 ); // bool(false)
var_dump( $any_integer_but_not_one !== 1 ); // bool(true)
$int_one = 1;
var_dump( !$int_one === 1 ); // bool(false)
var_dump( $int_one !== 1 ); // bool(false)
Я ожидал, что эти тесты всегда будут давать одинаковые результаты (true-true
или же false-false
), но они этого не делают.
я думал так !x === y
а также x !== y
сделать то же самое, так в чем же разница? Вот я и говорю только для идентичный оператор, а не равный один.
(Любые другие вопросы, которые я обнаружил, касались различий между равенство а также идентичность)
это потому что —
!$any_integer_but_not_one
вернусь false
,
когда var_dump( !$any_integer_but_not_one === 1 );
это var_dump( false === 1 );
так что вернусь false
Других решений пока нет …