![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
![]()
Вот еще один пример для меня необъяснимый и нигде не могу найти точного пояснения.
Код:
Я рассуждаю так (может быть ошибаюсь): значение переменной $a равно 0. В PHP все, что находится в двойных кавычках интеполируется. Значит, в операнде "$a" должно быть 0. Пустая строка "" тоже трактуется сначала как 0, а потом как false. Таким образом, должно быть равенство (по моей логике), а это не так. В чем я ошибаюсь и как PHP интерпретирует данное сравнение? Буду очень благодарен за пояснения. Спасибо. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
По-моему, проблема в первых кавычках в скобке. Если их убрать, то равенство есть. А если они есть, то первая часть выражения воспринимается как строка длиной 1 со значением 0, и она не равна пустой строке.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
![]()
Получается, здесь (в операции сравнения) не действует общее правило интерполирования?
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Почему? Вы имеете в виду интерпретирования, а не интерполирования?
Здесь если оставить кавычки первые, то будет считаться строкой, и все правильно - строки не одинаковы. А так это будут нули, и будет равенство. Вообще есть таблица http://www.php.net/manual/en/languag...comparison.php, может, поможет чем-то... |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
![]()
Я имел в виду именно интерполирование. Вот что написано в учебнике Котерова:
Цитата:
Но не происходит. Вопрос: почему? |
|
![]() |
![]() |
![]() |
#6 |
Программист
Форумчанин
Регистрация: 27.02.2009
Сообщений: 505
|
![]()
В условиях это не работает
В условиях надо if ($a == "") ... Работает в тексте echo "num, $a"'
there are no limits when you're software engineer
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Для меня ясно, что в случае с "$a" и "" это сравниваются две переменных типа строка, так что преобразований типов не происходит. Оно происходит в случае первом. Про интерполирование я не слышал, но это не так важно - в принципе, это можно воспринимать как данность или условное соглашение языка.
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 02.08.2008
Сообщений: 94
|
![]()
Верный ответ: в данном случае это строки и они сравниваются как строки. Интерполирование все же для "$a" происходит и 0 оказывается в кавычках как строка. Строки сравниваются побайтно и поэтому операция сравнения возвращает false.
|
![]() |
![]() |
![]() |
#9 | ||
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
![]() Цитата:
Чтобы впоследствии не было вопросов обьясняю. PHP код:
PHP код:
Стрелок-охотник
Последний раз редактировалось mv28jam; 25.01.2010 в 12:55. |
||
![]() |
![]() |
![]() |
#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 |