Почему я ломаю цикл и получаю ошибку даже после не выполнения условия?

У меня следующий фрагмент кода:

        $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?

Пожалуйста, помогите мне.

Благодарю.

0

Решение

Вы должны использовать приведенный ниже код,
как имя изображения 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;
}
}
2

Другие решения

Используйте скобки {} для блока if и проверьте оператор print_r.

0

Используйте скобку для 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, Разорвать цикл уничтожения и другие файлы не проверены, но продолжайте разрешать проверять другие файлы и показывать ошибку только для неисправных условий.

0
По вопросам рекламы [email protected]