In_array работает неправильно при работе со строками Этот код: var_dump(in_array("000", array(",00", ".00"))); var_dump(in_array("111", array(",11", ".11"))); выход: bool(true) bool(false) Почему первая строка возвращает true? Ответ 1 Это связано с принуждением типа PHP. "000" по существу преобразуется только в 0. Чтобы заставить его использовать строгую проверку типов, in_array() принимает третий параметр. var_dump(in_array("000", array(",00", ".00"), true)); выход: bool(false) EDIT: @andrekeller также указал, что ".00", вероятно, также преобразуется в int 0. Мораль истории, не доверяйте PHP, чтобы получить правильные типы.
Ответ 1 Это связано с принуждением типа PHP. "000" по существу преобразуется только в 0. Чтобы заставить его использовать строгую проверку типов, in_array() принимает третий параметр. var_dump(in_array("000", array(",00", ".00"), true)); выход: bool(false) EDIT: @andrekeller также указал, что ".00", вероятно, также преобразуется в int 0. Мораль истории, не доверяйте PHP, чтобы получить правильные типы.