Здравствуйте хабравчане. Прислали мне из одной конторы тестовые задания, и среди вопросов есть такой:
Дан код
$x = ....;
if ($x == 1 && $x==2 && $x==3){
echo(«ok»);
}
Что нужно подставить в $x чтобы было выведено в консоль «ok».
Я в голове перебрал все варианты, но так и не придумал как одна переменная может пройти сразу три сравнения с разными значениями. Возможно этот вопрос на знание каких то особенностей PHP, но с моей колокольни решения эта задача не имеет.
Следовательно вопрос: имеет ли эта задача решение?
Спасибо за ответ. Но такое приведение типов меня мягко говоря обескураживает, ведь по идее в php true == 1. Больше похоже на баг чем на адекватное поведение интерпретатора.
Я не понимаю, с какой целью даются такие задания (да, я не помню наизусть правила приведения типов). Они ищут людей, которые будут им писать код в таком стиле? Они ищут любителей зазубривания документации?
Как пример, некто может написать if($secret_key==12345678){...}
при этом злоумышленник даже не зная значение секретного числа может обойтись простым true (если конечно сумеет его передать)
Ну право работодателя требовать определенных знаний, даже таких как кажется мелочей. На самом деле это даже к лучшему, познал сейчас свою бездну невежества =)) Кроме того, я проверил поведение булевого типа еще в perl и python. Для perl верно следующее выражение ( True == 0 && False == 0 ), а python однозначно говорит что True == 1 а False == 0.