使用PHP显示文件夹中的文件数

时间:2014-03-05 16:02:40

标签: php html

我有这个简单的脚本来显示文件夹中的所有图像。

 <?php 

 foreach(glob("".$filePath."/*.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}",GLOB_BRACE) as $images) 
{
$filecount = count(glob("".$filePath."/*.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}",GLOB_BRACE));
if ($filecount >1)
    {
echo "<img   width='75' height='auto' style='margin-right: 3px; border:1px solid #dddddd' alt='".$row["caption"] ."' src=\"".$images."\">";
    }
else
    {
echo "<img   width='200' height='auto' style='margin-right: 3px; border:1px solid #dddddd' alt='".$row["caption"] ."' src=\"".$images."\">";
    }

}

 ?>

我想显示文件夹中的文件数量。给我下面的尝试。我的问题是这显示了每张图片前的文件数量。

if ($filecount >1)
{
echo '' . $user . ' ' .'added ' . ' ' . $filecount . ' ' . 'new photos';
echo "<img width='75' height='auto' style='margin-right: 3px;  alt='".$row["caption"] ."' src=\"".$images."\">";
}

如何在显示图像组之前显示文件数?

2 个答案:

答案 0 :(得分:0)

只有在收集文件后才需要显示文件数 你可以通过在循环之前声明filecount变量来完成它,然后你需要在每次循环进入下一个结果时对值进行计数和求和,并最终显示文件总数。
以下是代码的编写方式:

<?php 
$filecount = 0;

foreach(glob("".$filePath."/*.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}",GLOB_BRACE) as $images) 
{
    $tempFileCount = count(glob("".$filePath."/*.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}",GLOB_BRACE))
    $filecount += $tempFileCount;
    if ($tempFileCount > 1)
    {
        echo "<img   width='75' height='auto' style='margin-right: 3px; border:1px solid #dddddd' alt='".$row["caption"] ."' src=\"".$images."\">";
    }
    else
    {
        echo "<img   width='200' height='auto' style='margin-right: 3px; border:1px solid #dddddd' alt='".$row["caption"] ."' src=\"".$images."\">";
    }
}

if($filecount > 1)
{
    echo '' . $user . ' ' .'added ' . ' ' . $filecount . ' ' . 'new photos';
}

?>

答案 1 :(得分:0)

首先创建一个将所有图像作为数组返回的函数。如果glob php函数出错,这将抛出一个异常(大部分都不会发生,但值得在发生时知道它)。该函数将使代码更清晰。

<?php
function getAllImagesOnDirectory($directory) {
     $imagesArray = glob("".$filePath."/*.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}",GLOB_BRACE);
     if(!is_array($imagesArray)) {
        throw new RuntimeException("There is a problem getting images on directory " . $directory);
     }

     return $imagesArray;
}


//Then we call this function to get all the images.
$allImagesOnFilePath = getAllImagesOnDirectory($filePath);
$numberOfImages = count($allImagesOnFilePath);


if($numberOfImages > 0) { 
     echo '<p>' . $user . ' added ' . $numberOfImages . ' new photos</p>';
     //If the number of images is more than 0 then traverse all the images and echo them
     foreach($allImagesOnFilePath as $oneImage) {
        echo "<img style='max-width:100%;height:auto;margin-right: 3px; border:1px solid #dddddd' alt='".$row["caption"] ."' src=\"".$oneImage."\">";
     }
}
else { 
     //The user has no uploaded images
     echo '<p>' . $user . ' has not added new photos yet :(</p>';
}

这样我们就可以在使用$numberOfImages之前使用foreach,从而按照您的要求进行操作 我们这里还使用style属性为图像应用宽度和高度。请参阅此文章,了解如何制作可自动缩放的图片:http://unstoppablerobotninja.com/entry/fluid-images