Всем здравствуйте! Разбираюсь с преобразованием типов (пока для примитивов): 1) при сравнении number == null к какому типу будут приведены операнды до выдачи результата - к булевому или числовому? Отличная статья по этой ссылке: http://sldn.softlayer.com/blog/dmcaloon/PHP-Type-Conversions-Comparison ...гласит, что к булевому (см. таблицу), но в учебнике Котерова написано, что, если один из операндов - число, "сравнение всегда выполняется в числовом контексте, даже если второй операнд — не число." ; 2) при сравнении string == number операнды преобразовываются к числу. К какому типу - integer или float?
Со временем придет осознание того, что лучше не надеяться на динамическую типизацию в ифе. Лучше сравнивать уже подготовленные данные. И через ===. Иначе в ифе можно себе в ногу выстрелить. Код (PHP): $str = 'Пыщ пыщ, однако!'; if (str_pos($str, 'Пыщ')){ echo 'Найдено!'; } else { echo 'Не найдено!'; } В строке стопудово есть "Пыщ", но скрипт скажет, что не нашел такое. А если искать, скажем, запятую, то будет найдено. Привет, типизация! Динамическое приведение типов это забавно, но нужно всегда быть настороже. Оно генерит самые подлые баги порой.
Это не те доки, кот. мне нужны) Кину ещё ссылку из док-тации: http://www.php.net/manual/ru/language.oper....comparison.php Там последняя табл. - "Сравнение различных типов", где, в общем-то, написано, что к чему преобразуется при сравнении, просто я хочу уточнить относительно null. Судя по ней, null при сравнении с чем угодно (кроме строки) преобразуется в булево. Правильно?
Вот в этом и корень моего вопроса((( В док-тации (таблице) указано следующее: Т.е., при сравнении со строкой NULL преобр. в строку, а при сравн-ии с чем угодно другим (тем же числом) - в bool! Как же так?(
Бро, чесслово, тебе не все равно? У тебя что-то не работает из-за этого? Или работает не так как надо? Какая разница вообще?
Хочу сделать программку (чисто для себя), кот-ая показывает, как преобразовываются типы при сравнении (каждый из операндов).