2

我正在为我的工作场所创建一个 Intranet,并使用了一些我在网上找到的 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>";
?>
4

5 回答 5

6

只需执行以下操作:

if( count($files) == 0 )
{
  echo '<p>No files found</p>';
}
else
{
  // you have files
}
于 2012-10-03T14:04:59.477 回答
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>";
}

?>
于 2012-10-03T14:07:04.777 回答
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函数。但是,此函数将为当前目录上一级目录返回两个额外条目。您需要从文件数组中删除这些条目。您的代码将如下所示:

<?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
}
?>
于 2012-10-03T14:13:59.253 回答
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.";
}
// ...
于 2012-10-03T14:07:04.943 回答
0

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

我不懂php,但我知道java、html、css和javascript。我确定 php 中有类似的东西array.length(或其他东西来获取数组的长度)

我希望这可以帮到你。

编辑:我已经看到其他人已经回答了比我好 10 倍的问题。另外,php看起来很酷,我可以学习一下

于 2012-10-03T14:10:20.620 回答