我正在为我的工作场所创建一个内部网,并使用了我在网上找到的一些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>";
?>
答案 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看起来很酷,我可能会学习它