взял тупо пример с сайта и немного откорректировал PHP: echo "<plaintext>"; $array = array( 'blue', 'red', 'green', 3 => 'red'); $key = array_search('green', $array); // $key = 2; echo $key."|\t\r"; if ($key==false) { echo 'я говорю что green нету , а он есть !';} $key = array_search('red', $array); // $key = 1; echo $key."|\t\r"; if ($key==false) { echo 'я говорю что red нету , а он есть !';} $key = array_search('blue', $array); // $key = 1; echo $key."|\t\r"; if ($key==false) { echo 'я говорю что blue нету , а он есть !';} http://phpfiddle.org/main/code/qbtd-3qcn вот сижу и охереваю и понимаю что он прав .. ведь 0 это false
Последний $key Будет 0. Строгое сравнение бы использовать PHP: $array = array('blue', 'red', 'green', 3 => 'red'); $key0 = array_search('green', $array); // $key = 2; var_dump($key0); if ($key0 == false) { echo 'я говорю что green нету , а он есть !'; } $key1 = array_search('red', $array); // $key = 1; var_dump($key1); if ($key1 == false) { echo 'я говорю что red нету , а он есть !'; } //var_dump($array); $key2 = array_search('blue', $array); // $key = 1; var_dump($key2); if ($key2 === false) { echo 'я говорю что blue нету , а он есть !'; } Код (Text): int 2 int 1 int 0
Добро пожаловать в чудесный мир. Код (Text): 0 == false ;// true 0 === false;//false Читай документацию. Везде, в каждом месте, где возвращаемыми значениями могут быть как 0, так и false, прям в красном прямоугольнике пишут, что надо использовать строгое сравнение. Его вообще надо использовать везде, где приведение типов явно не требуется и не является частью логики.