Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
Всем здравия!
Почему in_array(0, array('y', 'm', 'd', 'h', 'i', 's', 'days')); возвращает true а
in_array(false, array('y', 'm', 'd', 'h', 'i', 's', 'days')); возвращает false?
----- $i = 0;
$i = $i++ + ++$i; ?
LIME
Отправлено: 02 Июня, 2013 - 02:18:46
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
при сравнении с числом строки приводятся к числу (Добавление)
в пхп ЕСТЬ типы
просто их приведение происходит само, без вас
прочти еще раз мануал об этом
DelphinPRO
Отправлено: 02 Июня, 2013 - 02:43:02
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
как сравнить строку с числом? никак. Это то же самое, что сравнивать килограм с миллиметром. абсурд. Но существует такая вещь, как приведение типов , Это когда значение одного типа приводится к другому.
Когда сравнивается число со строкой, то строка привидится к числовому типу. При этом если строку нельзя интрепретировать как число (например строку '5' - можно, а 'пять' - нельзя), то она преобразуется в значение 0. Поэтому в первом примере вы получаете истину.
Когда строка сравнивается с булевым значением, то она всегда имеет значение true, кроме случая когда строка равна '' (пустая, однако помните, что ' ' - уже не пустая строка). Поэтому во втором примере получается что false сравнивается с true, что естественно дает в результате ложь.
Если вам нужно проверять наличие значения в массиве с учетом его типа, то следует указать третий, необязательный параметр в функции in_array() равным true.
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
Все равно непонятно.Опишите сценарий сравнения. Ведь false == 0. (Добавление)
Все наконец понял.Сравнение и всегда с учетом типов.Просто если параметр strict не указан, элемент приводится к типу аргумента, и не приводится, если strict = true.Всем спасибо!Всем участникам конференции +1.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.