Крсота PHP

А вот этот пример я давно находил. Опытного ’фила он не удивит. Нормального же человека очень увидит.

Так вот, этот пример выведет “bug?”. Потому как PHP таки типизированый язык, который пытается прикидываться не типизированым. И $b преобразуется в integer перед сравнением.
В Perl из этого выкрутились тем, что есть два различных оператора сравнений — для строк, и для целых. Но PHP пошел дальше — там два оператора сравнения, один учитывает тип (“===”), другой нет.
Соответственно использование оператора == вместо === становится одной из наиболее частых ошибок в PHP-коде, которые замечают когда слишком поздно.

$a = 0;
$b = '';

if ( $a == $b )
echo «bug?\n»;

if ( $a === $b )
echo «No, it's a feature!\n»;

if ( 0 === '0' )
echo «Are you thing that 0 and '0' equal? ;)\n»;

Запись опубликована в рубрике Новости с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Оставьте эти два поля как есть:

Защищено Invisible Defender. Показывать 403 для 308 104 плохих парней.