Ошибка с array_search

Кажется, я попал в ошибку с поиском массива. Ниже мой код.

$allowedTypes = array( 'image/gif', 'image/jpg', 'image/jpeg', 'image/png' ); if(array_search("image/gif", $allowedTypes)) { print "true"; } else { print "false"; } 

Он всегда печатает false. Несмотря на то, что image / gif находится в списке разрешенных типов.

Related of "Ошибка с array_search"

array_search возвращает индекс элемента в массиве. В этом случае он возвращает целое число 0, которое при преобразовании в bool является ложным.

Если вы прочтете документацию, вы бы увидели следующее в большом красном поле:

Эта функция может возвращать Boolean FALSE, но может также возвращать небулевое значение, которое оценивается как FALSE, например 0 или «". Пожалуйста, прочитайте раздел о Booleans для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции.

Вы должны использовать:

 if (array_search("image/gif", $allowedTypes) !== false) { // ... } 

Или, просто чтобы указать, содержит ли массив этот элемент, вы можете использовать in_array() который возвращает простое да / нет в булевой форме:

 if (in_array("image/gif", $allowedTypes)) { // ... } 

Я думаю, что это то, что вы ищете:

 $allowedTypes = array( 'image/gif', 'image/jpg', 'image/jpeg', 'image/png' ); if(in_array("image/gif", $allowedTypes)) { print "true"; } else { print "false"; }