PHP在html错误中循环遍历文件夹和echo图像

时间:2014-01-30 13:29:06

标签: php foreach

我只是不能让这个工作出错在这里?

 $files = scandir('gallery/');
 if ($files !== false) 
 {
    foreach($files as $f) {
      if ($f == '..' || $f == '.')
          continue;     
      echo '<li><img src="gallery/'.$f.'" alt="'.$f.'" title=""></li>'."\n";
    }
 } 

该文件夹位于名为“gallery”的根文件夹中。图像在里面..

我总是收到这个错误:

  

警告:第101行“MYDOCUMENT.PHP”中为foreach()提供的参数无效。

4 个答案:

答案 0 :(得分:2)

这适用于我......:

<?php
    $files = scandir('gallery/');
    if ($files !== false) {
        foreach($files as $f) {
            if ($f == '..' || $f == '.') continue;
            echo $f . "<br>\n";
        }
    }
?>

这与你的代码完全相同......所以请查看“gallery /”目录内容......

答案 1 :(得分:2)

<?php
$files = scandir('gallery/');
if ($files !== false) 
{
    foreach(is_array($files) as $f) {
    if ($f == '..' || $f == '.')
?>
    <li><img src="<?php echo 'gallery/'.$f ?>" alt="<?php echo $f ?>" title="">
<?php
   }
} 
?>

答案 2 :(得分:1)

将foreach改为:

 foreach((array)$files as $f)

代码可能是:

 $files = scandir('gallery/');
 if ($files !== false) 
 {
    foreach((array)$files as $f) {
      if ($f == '..' || $f == '.')
          continue;     
      echo '<li><img src="gallery/'.$f.'" alt="'.$f.'" title=""></li>'."\n";
    }
 } 

答案 3 :(得分:1)

您不应该使用以下命令验证数组:

if ($files !== false) 

但是这样做:

if (is_array($files) && count($files) > 0) {

否则你会收到类似这样的警告。

[编辑] 并考虑像一个人说的那样使用glob。 这将适用于该功能。

示例:

if (is_array($files) && count($files) > 0) {
   foreach(glob('gallery/*.{jpeg,gif,png}', GLOB_BRACE)) {
      // code here
   }
}