Удивило!

На этот раз удивил PHP:

$a = true ? 1 : false ? 2 : 3;

а в $a в итоге — 2!

4 комментария to “Удивило!”

  1. vkontakte.ru Елена Хохолева:

    А меня почему-то не удивляет.

    Просто PHP, как и доктор Хаус, априори полагает, что все лгут. Если вывести значение неинициированной переменной, то оно равно ложь.

    В твоем примере написано:
    если истина, то присвоить 1
    иначе{
    если ложь, то 2,
    иначе 3
    }
    Что получается, когда входим в условие: истина? — нет, все лгут, значит идем во вторую ветку. Ложь? — да, ложь — выбираем 2. Всё более чем логично. Кроме 2 тут и быть ничего не может.

    Хаус форева!

    • Евгений Бурмицкий:

      Интересная версия 🙂
      А я вот много времени потратил выясняя почему скрипт, который я написал, работает совершенно не так как я ожидаю…
      Хауса посмотреть что-ли?! Как я погляжу — при отладке помогает 😀

      • vkontakte.ru Елена Хохолева:

        К сожалению, Хаус не помогает, когда код должен быть оптимизирован. Вообще с производительностью у Хауса всё очень плохо: ведут 4-5 человек одновременно всего одного пациента, делают совершенно невообразимое количество исследований и так далее. Так что с учетом того, с какими проектами и какими нагрузками приходится работать нам, метод доктора Хауса не подойдет.

        Но вообще сериал прикольный. 🙂

  2. Евгений Мокеев:

    Можно здесь более подробно почитать, там же сравнение с другими ЯП — http://habrahabr.ru/blogs/php/114899/

Коментарии