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