我试图回显文件夹中的所有jpg图像文件。 它工作,但我没有行显示错误,文件夹是空的正确写入。它显示了一个php脚本错误,
另一个问题是我在目录中有一个.txt文件,这个 一个人将阅读特定页面的文本。脚本的其余部分 将回显jpg文件。因此,它可能无法回显零文件 文本文件
folder = cat gategory name / title .txt file =页面的文本 .jpg文件=是类别图片
错误是:
警告:在第67行的/home/ranshow/domains/show.webking.co.il/public_html/modules/attractions.php中为foreach()提供的参数无效 画廊是空的,没有图片显示 0
<div style="text-align: center;margin-top:25px;margin-bottom: 50px;">
<?
$count = "0";
foreach (glob("attractions/$cat/*.jpg") as $filename) {
$count++;
$files[] = $filename;
$filename = urlencode($filename);
}
if($count == "0") { echo "Gallery is empty, no pics to show"; }
else {
?>
<?
foreach ($files as $filename) {
?>
<a id="thumb1" href="img.php?img=<?=$filename;?>" class="highslide" onclick="return hs.expand(this)">
<img src="img.php?img=<?=$filename;?>" width="167" height="150" style="margin: 2px;d0b28c;padding:1px;border: 1px solid #c1c1c1;">
</a>
<?
}
?>
<?
}
?>
<br />
<i><?=$count;?> <?=$lang['attractions']['totalimages'];?></i>
<br />
</div>
我该如何解决这个问题?谢谢:))
答案 0 :(得分:2)
在输入foreach之前检查计数:
$globs = glob("attractions/$cat/*.jpg");
if( $globs ){
foreach ($globs as $filename) {
$count++;
$files[] = $filename;
$filename = urlencode($filename);
}
}
答案 1 :(得分:0)
似乎你需要scandir
而不是glob,因为glob看不到unix隐藏文件。
<?php
$pid = basename($_GET["prodref"]); //let's sanitize it a bit
$dir = "/assets/$pid/v";
if (is_dir_empty($dir)) {
echo "the folder is empty";
}else{
echo "the folder is NOT empty";
}
function is_dir_empty($dir) {
if (!is_readable($dir)) return NULL;
return (count(scandir($dir)) == 2);
}
?>
请注意,此代码不是效率的顶峰,因为没有必要只读取所有文件来判断目录是否为空。所以,更好的版本将是
function is_dir_empty($dir) {
if (!is_readable($dir)) return NULL;
$handle = opendir($dir);
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
return FALSE;
}
}
return TRUE;
}
顺便说一下,不要使用单词来替换 boolean 值。后者的目的是告诉你某些事情是否空洞。一个
a === b
表达式已分别在编程语言Empty
或Non Empty
方面返回FALSE
或TRUE
- 因此,您可以在控件结构中使用结果{IF()
1}}没有任何中间值
请查看Your Common Sense的答案以获取更多详情