|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.01.2010, 22:54 | #1 |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
Операция сравнения: требуется разъяснение
Вот еще один пример для меня необъяснимый и нигде не могу найти точного пояснения.
Код:
Я рассуждаю так (может быть ошибаюсь): значение переменной $a равно 0. В PHP все, что находится в двойных кавычках интеполируется. Значит, в операнде "$a" должно быть 0. Пустая строка "" тоже трактуется сначала как 0, а потом как false. Таким образом, должно быть равенство (по моей логике), а это не так. В чем я ошибаюсь и как PHP интерпретирует данное сравнение? Буду очень благодарен за пояснения. Спасибо. |
22.01.2010, 23:19 | #2 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
По-моему, проблема в первых кавычках в скобке. Если их убрать, то равенство есть. А если они есть, то первая часть выражения воспринимается как строка длиной 1 со значением 0, и она не равна пустой строке.
|
22.01.2010, 23:22 | #3 |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
Получается, здесь (в операции сравнения) не действует общее правило интерполирования?
|
22.01.2010, 23:25 | #4 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Почему? Вы имеете в виду интерпретирования, а не интерполирования?
Здесь если оставить кавычки первые, то будет считаться строкой, и все правильно - строки не одинаковы. А так это будут нули, и будет равенство. Вообще есть таблица http://www.php.net/manual/en/languag...comparison.php, может, поможет чем-то... |
22.01.2010, 23:32 | #5 | |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
Я имел в виду именно интерполирование. Вот что написано в учебнике Котерова:
Цитата:
Но не происходит. Вопрос: почему? |
|
22.01.2010, 23:36 | #6 |
Программист
Форумчанин
Регистрация: 27.02.2009
Сообщений: 505
|
В условиях это не работает
В условиях надо if ($a == "") ... Работает в тексте echo "num, $a"'
there are no limits when you're software engineer
|
22.01.2010, 23:37 | #7 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Для меня ясно, что в случае с "$a" и "" это сравниваются две переменных типа строка, так что преобразований типов не происходит. Оно происходит в случае первом. Про интерполирование я не слышал, но это не так важно - в принципе, это можно воспринимать как данность или условное соглашение языка.
|
23.01.2010, 10:37 | #8 |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
Верный ответ: в данном случае это строки и они сравниваются как строки. Интерполирование все же для "$a" происходит и 0 оказывается в кавычках как строка. Строки сравниваются побайтно и поэтому операция сравнения возвращает false.
|
25.01.2010, 12:24 | #9 | ||
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
Цитата:
Чтобы впоследствии не было вопросов обьясняю. PHP код:
PHP код:
Стрелок-охотник
Последний раз редактировалось mv28jam; 25.01.2010 в 12:55. |
||
25.01.2010, 19:52 | #10 | ||
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
Цитата:
Цитата:
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
операция SHL | Anohorett | Общие вопросы C/C++ | 2 | 02.12.2009 23:27 |
разъяснение кода БД Ежедневника на Delphi | TaYgA | Помощь студентам | 1 | 19.10.2009 17:33 |
Операция в Газе | Роман Радер | Свободное общение | 2 | 31.12.2008 17:03 |
структура моей бд. Нужно разъяснение. | Roof | Microsoft Office Access | 1 | 27.12.2008 18:23 |
Операция Ы | SASHA50 | Microsoft Office Excel | 10 | 25.04.2008 12:38 |