Вопрос по php, Странное выполнение условия if |
Здравствуйте, гость ( Вход | Регистрация )
Вопрос по php, Странное выполнение условия if |
15.02.2011 - 22:00
Вставить ник | Быстрая цитата | Сообщение
#1
|
|
Частый гость Группа: Участник Сообщений: 110 Регистрация: 29.06.2007 Пользователь №: 20825 |
Есть такая казалось бы простая задача:
массив вида CODE array(5) { ["cnt"]=> int(4) [0]=> string(12) "DSC00320.JPG" [1]=> string(12) "DSC00327.JPG" [2]=> string(12) "DSC00329.JPG" [3]=> string(12) "DSC00326.JPG" } делаю перебор CODE foreach(array as $k => $v) { if($k != "cnt") $print .= $v." "; } далее вывожу переменную $print, резльтат: DSC00327.JPG DSC00329.JPG DSC00326.JPG Сломал мозг, чего не так?! |
|
|
15.02.2011 - 22:23
Вставить ник | Быстрая цитата | Сообщение
#2
|
|
10 лет на форуме Группа: Участник Сообщений: 8992 Регистрация: 28.01.2007 Пользователь №: 18710 |
а почему string? не strong?
|
|
|
15.02.2011 - 22:58
Вставить ник | Быстрая цитата | Сообщение
#3
|
|
Это вам не это... Группа: Участник Сообщений: 2061 Регистрация: 20.09.2003 Пользователь №: 9 |
Согласно документации (]]>http://www.php.net/manual/en/language.oper....comparison.php]]>):
Цитата If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number То есть при сравнении числа и строки, последняя так же будет преобразована к числу - в данном случае к нулю: Код var_dump(0 == "cnt"); var_dump(0 === "cnt"); Код bool(true) bool(false) Таким образом, чтобы в вашем примере условие сработало четыре раза, как и предполагается, необходимо заменить $k != "cnt" (равенство значений после приведения типов) на $k !== "cnt" (идентичность значений без приведения типов). |
|
|
20.02.2011 - 20:24
Вставить ник | Быстрая цитата | Сообщение
#4
|
|
Частый гость Группа: Участник Сообщений: 110 Регистрация: 29.06.2007 Пользователь №: 20825 |
Спасибо огромное, попробую
|
|
|
Текстовая версия | Сейчас: 3.01.2025 - 02:27 |