Кажется, я попал в ошибку с поиском массива. Ниже мой код.
$allowedTypes = array( 'image/gif', 'image/jpg', 'image/jpeg', 'image/png' ); if(array_search("image/gif", $allowedTypes)) { print "true"; } else { print "false"; }
Он всегда печатает false. Несмотря на то, что image / gif находится в списке разрешенных типов.
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"; }