Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php foreach跳过图像的空路径_Php - Fatal编程技术网

php foreach跳过图像的空路径

php foreach跳过图像的空路径,php,Php,我正在尝试使用php回显图像,我的图像存储在数组中,所以我不能跳过空值,我的php代码是 $images = 'imgs/001.jpg,imgs/001.gif,imgs/002.png,imgs/003.jpg,imgs/004.jpg, imgs/005.jpg,imgs/006.png,imgs/007.png,'; $expl = explode (',', $images); foreach ($expl as $path){ if (!empt

我正在尝试使用php回显图像,我的图像存储在数组中,所以我不能跳过空值,我的php代码是

 $images = 'imgs/001.jpg,imgs/001.gif,imgs/002.png,imgs/003.jpg,imgs/004.jpg,
imgs/005.jpg,imgs/006.png,imgs/007.png,';
    $expl = explode (',', $images);

    foreach ($expl as $path){

        if (!empty($path) || getimagesize($path)!== false){
            $type = pathinfo($path, PATHINFO_EXTENSION);
            $data = file_get_contents($path);
            $base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

            echo '<img src="'.$base64.'" width="300" height="300">' . '<br>';

            var_dump (getimagesize($path));
        }

    }
我试过:
if(!empty($path)| getimagesize($path)!==false)

但似乎不起作用,我得到了同样的错误

我可以建议这样做

$expl = preg_split('@,@', $images, null, PREG_SPLIT_NO_EMPTY);
这将自动删除所有空条目

我建议您这样做

$expl = preg_split('@,@', $images, null, PREG_SPLIT_NO_EMPTY);
这将自动删除所有空条目

问题在这里

if (!empty($path) || getimagesize($path)!== false) {
$path
为空时,php检查第二个条件
getimagesize($path)
,这会给您一个警告,因为您检查了
getimagesize(“”)

因此,正确的规则是:

if (!empty($path) && getimagesize($path) !== false) {
问题就在这里

if (!empty($path) || getimagesize($path)!== false) {
$path
为空时,php检查第二个条件
getimagesize($path)
,这会给您一个警告,因为您检查了
getimagesize(“”)

因此,正确的规则是:

if (!empty($path) && getimagesize($path) !== false) {

@u_mulder是对的,但你也应该使用
trim($images,,')
删除不必要的
逗号

$expl = explode (',', trim($images,','));

阅读和

@u_mulder是正确的,但你也应该使用
trim($images,,')
删除不必要的
逗号

$expl = explode (',', trim($images,','));

阅读和

除了修复逻辑错误,您还可以简化您的条件

if ($path && getimagesize($path) !== false) { ...

empty
是过分的,因为它包含了一个
isset
检查,考虑到
$path
总是由foreach循环设置,这是不必要的。如果
$path
是一个空字符串,它将计算为false。

除了修复逻辑错误外,还可以简化条件

if ($path && getimagesize($path) !== false) { ...

empty
是过分的,因为它包含了一个
isset
检查,考虑到
$path
总是由foreach循环设置,这是不必要的。如果
$path
是一个空字符串,它将计算为false。

最后一个数组元素为空添加以下内容:$images=rtrim($images,,');,然后分解。替换或到和在您的if
|
->
&
中可能重复的
!空($path)
应按预期工作。最后一个数组元素为空添加:$images=rtrim($images,,');,然后分解。替换或到和在您的if
|
->
&
中可能重复的
!空($path)
应该可以按预期工作。这是一个很好的解决方案,但是如果你可以在没有正则表达式的情况下做一些事情,你应该-这是一个很好的解决方案,但是如果你可以在没有正则表达式的情况下做一些事情,你应该-