var_dump(($value > 0) || (strlen($string) == 2));
||
является логическим логическим operatpor см http://php.net/manual/de/language.operators.logical.php
var_dump(($value > 0) | (strlen($string) == 2));
|
является оператором побитового см http://php.net/manual/de/language.operators.bitwise.php
Конечно, вы можете изменить |
к ||
, но вы не получите тот же результат;) Небольшое пояснение для вашего кода, но вы должны действительно прочитать документ для бит и логических операторов:
Вы уже ответили, что оба не делать то же самое:
var_dump(($value < 0) || (strlen($string) == 2));
-> возвращает логическое значение истинного
var_dump(($value < 0) | (strlen($string) == 2));
-> возвращает целое число 1
Если вы:
var_dump(true === 1);
вы получите ложь, потому что число 1 не является логическим истинным, даже если:
var_dump(true == 1);
или
var_dump(true === (bool)1);
возвращает истину (==
не проверяет тип, см docs и (bool) отличает целое число 1 как логическое значение true (см. http://php.net/manual/de/language.types.boolean.php#language.types.boolean.casting, чтобы узнать, что является ложным и что истинно).
Один ('|') является [побитовым оператором] (http://www.php.net/manual/en/language.operators.bitwise.php), другой ('||') является [ логический оператор] (http://www.php.net/manual/en/language.operators.logical.php) .... и нет, они не взаимозаменяемы так же, как с использованием '+' и '* 'с двумя номерами, как правило, не даст вам того же результата, потому что они разные операторы, которые делают разные вещи. –
Нет, вы не можете изменить один на другой. Это совершенно разные операции. –
@MarkBaker, но логика - всего 1 бит. Существует истина (1) и ложная (0). '1 | 0 <=> 1 || 0' - да или нет? – ventaquil