我已经关注了代码片段:
$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 :(得分:2)
您应该使用以下代码,
因为图片名称是数组的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;
}
}
答案 1 :(得分:0)
对if块使用括号{}并检查print_r语句。
答案 2 :(得分: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
。不破坏断开破坏循环和其他文件,但继续检查其他文件并仅在出现故障时显示错误。