使用PHP显示文件夹内容,但在文件夹为空时显示消息

时间:2012-10-03 14:02:52

标签: php html

我正在为我的工作场所创建一个内部网,并使用了我在网上找到的一些PHP扫描其所在文件夹的内容并将其显示为链接。它做得很好,但当它在一个空文件夹中时,我希望它显示一条消息,例如“没有符合这些条件的记录。”。

有没有办法在php中添加内容以指定如果没有列出的文件夹打印此

我接下来不知道php,但是html和css没问题。

这是我在页面中使用的php:

<?php
$dir=opendir(".");
$files=array();
while (($file=readdir($dir)) !== false)
{
    if ($file != "." and $file != ".." and $file != "A.php")
    {
        array_push($files, $file);
    }
}
closedir($dir);
sort($files);
foreach ($files as $file)
print "<div class='fileicon'>
           <a href='$file'>
               <img src='../../../images/TR-Icon.png'>
               <p class='filetext'>$file</p>
           </a>
      </div>";
?>

如果您需要更多代码,例如整页html或css,请告诉我。

提前感谢您的帮助。

编辑:

在尝试Josh的解决方案后,它几乎已经钉了它,但我现在正在“找不到文件”打印3次。这是我现在使用的代码:

<?php
$dir=opendir(".");
$files=array();
while (($file=readdir($dir)) !== false)
{   
if( count($files) == 0 )
{
echo '<p>No files found</p>';
}
else
{
if ($file != "." and $file != ".." and $file != "A.php")
{
array_push($files, $file);
}
}
}
closedir($dir);
sort($files);
foreach ($files as $file)
print " <div class='fileicon'>
<a href='$file'>
<img src='../../../images/TR-Icon.png'>
<p class='filetext'>$file</p>
</a>
</div>";
?>

5 个答案:

答案 0 :(得分:6)

做一个:

if( count($files) == 0 )
{
  echo '<p>No files found</p>';
}
else
{
  // you have files
}

答案 1 :(得分:2)

试试这个:

<?php
$dir=opendir(".");
$files=array();
while (($file=readdir($dir)) !== false)
{
    if ($file != "." and $file != ".." and $file != "A.php")
    {
        array_push($files, $file);
    }
}

closedir($dir);

if(count($files) == 0){
    die("There are no records matching those criteria.");
}else{
    sort($files);
    foreach ($files as $file)
        print " <div class='fileicon'>
                   <a href='$file'>
                       <img src='../../../images/TR-Icon.png'>
                       <p class='filetext'>$file</p>
                   </a>
                </div>";
}

?>

答案 2 :(得分:2)

您可以使用count函数检查文件数组中是否有这样的文件:

if(count($files) > 0) // check if there are any files in the files array
    foreach ($files as $file) // print the files if condition is true
        print " <a href='$file'>$file</a> <br />";
else 
    echo "ERROR!";

编辑:

您还可以使用scandir功能。但是,此函数将为当前目录目录返回一个级别的两个额外条目。您需要从files数组中删除这些条目。您的代码将如下所示:

<?php
$dir   = "."; // the directory you want to check
$exclude = array(".", ".."); // you don't want these entries in your files array
$files = scandir($dir);
$files = array_diff($files, $exclude); // delete the entries in exclude array from your files array
if(!empty($files)) // check if the files array is not empty
{
    foreach ($files as $file) // print every file in the files array
        print " <div class='fileicon'>
<a href='$file'>
<img src='../../../images/TR-Icon.png'>
<p class='filetext'>$file</p>
</a>
</div>";
}
else 
{
    echo "There are no files in directory"; // print error message if there are noe files
}
?>

答案 3 :(得分:0)

您可以在文件阵列上使用count的简单条件。

// ...
closedir($dir);
if (count($files) > 0) {
    // sort files and iterate through file array, printing html
} else {
    echo "There are no records matching those criteria.";
}
// ...

答案 4 :(得分:0)

我认为您可以让它打印其他内容if($files.length == 0),并且只能正常打印if($files.length > 0)或其他内容。

我不懂php,但我知道java,html,css和javascript。 我确信php里面有array.length(或者其他东西可以得到数组的长度)之类的东西

我希望这很有帮助。

编辑:我见过其他人已经回答了比我的好10倍的事情。 另外,php看起来很酷,我可能会学习它