Size: a a a

2020 October 27

T🐜

The Ant 🐜 in phpGeeks
в итоге имеем что имеем
источник

V

Verdant in phpGeeks
👑OGURCHIK🖤 ️
Так его. Так. На на. Получай
😏
источник

AS

Andrey Shaposhnikov in phpGeeks
The Ant 🐜
оно и так должно работать :D
Но писали программисты, которые подругому просто не умеют.
Не должно так работать. Точнее, именно так и должно работать. Ты применил логическое И.
В твоём примере:
$firstLevelAllow = false; // это так-то байт из 8 битов в значении 0, то есть 00000000
$secondLevelAllow = true; // это байт вида 00000001

Дальше ты применил логическое И побитово.
Логично получил на выходе 00000000

Поскольку PHP подразумевает, что побитовое И может выдать произвольный байт (хоть 11111111), то присваивает возвращаемому значению тип int. Что явно описано в доках.

Тебя удивляет, что язык работает согласно докам на него что ли? :)
источник

V

Verdant in phpGeeks
Он дурак просто
источник

T🐜

The Ant 🐜 in phpGeeks
Andrey Shaposhnikov
Не должно так работать. Точнее, именно так и должно работать. Ты применил логическое И.
В твоём примере:
$firstLevelAllow = false; // это так-то байт из 8 битов в значении 0, то есть 00000000
$secondLevelAllow = true; // это байт вида 00000001

Дальше ты применил логическое И побитово.
Логично получил на выходе 00000000

Поскольку PHP подразумевает, что побитовое И может выдать произвольный байт (хоть 11111111), то присваивает возвращаемому значению тип int. Что явно описано в доках.

Тебя удивляет, что язык работает согласно докам на него что ли? :)
Слушай, если бы я хотел указать биты, я бы указал биты. А так я указал БУЛЕВ ТИП
источник

👑️

👑OGURCHIK🖤 ️ in phpGeeks
Andrey Shaposhnikov
Не должно так работать. Точнее, именно так и должно работать. Ты применил логическое И.
В твоём примере:
$firstLevelAllow = false; // это так-то байт из 8 битов в значении 0, то есть 00000000
$secondLevelAllow = true; // это байт вида 00000001

Дальше ты применил логическое И побитово.
Логично получил на выходе 00000000

Поскольку PHP подразумевает, что побитовое И может выдать произвольный байт (хоть 11111111), то присваивает возвращаемому значению тип int. Что явно описано в доках.

Тебя удивляет, что язык работает согласно докам на него что ли? :)
Давай. Топи его.
источник

V

Vasily in phpGeeks
The Ant 🐜
Слушай, если бы я хотел указать биты, я бы указал биты. А так я указал БУЛЕВ ТИП
ну и что должно быть при сложении булевых типов оператором для этого не предназначенным? язык со строгой типизацией пошлёт в хуй. а пхп сделал как смог
источник

T🐜

The Ant 🐜 in phpGeeks
ну так в этом и проблема, не кажется?
источник

👑️

👑OGURCHIK🖤 ️ in phpGeeks
Нет
источник

AS

Andrey Shaposhnikov in phpGeeks
The Ant 🐜
Слушай, если бы я хотел указать биты, я бы указал биты. А так я указал БУЛЕВ ТИП
Уточни, если нетрудно - в каком месте ты указывал ТИП? :) Тем, что присвоил константу переменной? :)
источник

АЯ

Андрей Ява in phpGeeks
ты выполнил битовую операцию, а удивлешь что у тебя битовый результат?
источник

👑️

👑OGURCHIK🖤 ️ in phpGeeks
The Ant 🐜
ну так в этом и проблема, не кажется?
Тебе дали овощи и сказали забить гвоздь. Ты что будешь пытается забыть гвоздь или сделать салат?
источник

T🐜

The Ant 🐜 in phpGeeks
Andrey Shaposhnikov
Уточни, если нетрудно - в каком месте ты указывал ТИП? :) Тем, что присвоил константу переменной? :)
ну я ж присвоил false интерпретатор обязан был его пометить как bool
источник

T🐜

The Ant 🐜 in phpGeeks
выходит не пометил
источник

АЯ

Андрей Ява in phpGeeks
а если бы ты выполнил умножение или конкатенацию, ты бы тоже ожидал булев тип?
источник

T🐜

The Ant 🐜 in phpGeeks
👑OGURCHIK🖤 ️
Тебе дали овощи и сказали забить гвоздь. Ты что будешь пытается забыть гвоздь или сделать салат?
в армии был? приказ не обсуждается, и обязан к испонению :D
источник

T🐜

The Ant 🐜 in phpGeeks
Андрей Ява
а если бы ты выполнил умножение или конкатенацию, ты бы тоже ожидал булев тип?
об этом не думал. Но проблемы надо решать по мере их поступления :)
источник

👑️

👑OGURCHIK🖤 ️ in phpGeeks
The Ant 🐜
в армии был? приказ не обсуждается, и обязан к испонению :D
Ну вот и тут так же
источник

AS

Andrey Shaposhnikov in phpGeeks
The Ant 🐜
ну я ж присвоил false интерпретатор обязан был его пометить как bool
Чудесно! Ты начинаешь понимать... Давай дальше.
https://www.php.net/manual/en/language.operators.bitwise.php
Bitwise operators allow evaluation and manipulation of specific bits within an integer.

Там явно написано: работает сей оператор с типом INT! И на входе, и на выходе.

Ты присвоил чуть выше boolean, но отдал оператору, который на входе ожидает int.
Тебя почему-то не удивляет, что при работе оператора присваивания ( = ) переменной должен ввалиться тип, а при работе другого оператора ( & ) - почему-то не должен. Где логика? :)
источник

T🐜

The Ant 🐜 in phpGeeks
сложно чот
источник