У меня следующий фрагмент кода:
$aSupportedImages = array('jpg', 'gif', 'png');
foreach($vshare as $file) {
if(!in_array(pathinfo($file, PATHINFO_EXTENSION), $aSupportedImages))
$errArr = 'File extension of image is wrong';
echo $errArr;
break;
}
Массив $ vshare выглядит следующим образом (вывод print_r($vshare);
):
Array
(
[IMG_0004.jpg] => Array
(
[0] => https://www.filepicker.io/api/file/UYUkZVHERGufB0enRbJo
)
)
Я не понимаю, почему всегда цикл прерывается и выдает ошибку «Расширение файла изображения неверно» даже после того, как файл имеет расширение, присутствующее в массиве $aSupportedImages
?
Пожалуйста, помогите мне.
Благодарю.
Вы должны использовать приведенный ниже код,
как имя изображения key
массива, и вы использовали value
в вашем расширении проверить
РЕДАКТИРОВАТЬ : Как сказали другие пользователи, вы пропали без вести {}
скобки в вашем if
состояние
НОТА : Когда вы хотите выполнить только один оператор, вы не должны использовать фигурные скобки. Если вы хотите выполнить несколько операторов, вы должны заключить их в фигурные скобки.
$aSupportedImages = array('jpg', 'gif', 'png');
foreach($vshare as $key=> $value) {
if(!in_array(pathinfo($key, PATHINFO_EXTENSION), $aSupportedImages))
{
$errArr = 'File extension of image is wrong';
echo $errArr;
break;
}
}
Используйте скобки {} для блока if и проверьте оператор print_r.
Используйте скобку для if
заявление:
foreach($vshare as $file) {
if(!in_array(pathinfo($file, PATHINFO_EXTENSION), $aSupportedImages)) {
$errArr = 'File extension of image is wrong';
echo $errArr;
break;
}
}
Также лучше использовать continue
вместо break
, Разорвать цикл уничтожения и другие файлы не проверены, но продолжайте разрешать проверять другие файлы и показывать ошибку только для неисправных условий.