$array = array(true, null); var_dump(in_array('', $array)); // true var_dump(in_array(0, $array)); // true var_dump(in_array(763, $array)); // true var_dump(in_array('cheese', $array)); // true var_dump(in_array(new stdClass(), $array)); // true var_dump(in_array([], $array)); // true
Tja, PHP und seine automatische Typumwandlung. Wahnsinn, was so alles in dem Array drin ist! in_array bitte nur mit dem dritten Parameter strict auf true benutzen. Sollte ohnehin default sein.
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Schon besser:
$array = array(true, null); var_dump(in_array('', $array, true)); // false var_dump(in_array(0, $array, true)); // false var_dump(in_array(763, $array, true)); // false var_dump(in_array('cheese', $array, true)); // false var_dump(in_array(new stdClass(), $array, true)); // false var_dump(in_array([], $array, true)); // false
Eine Antwort auf PHP WTF #8