Php 使用readdir时
我有一个项目清单,我必须显示每个项目3 img。我的代码:Php 使用readdir时,php,mysqli,while-loop,Php,Mysqli,While Loop,我有一个项目清单,我必须显示每个项目3 img。我的代码: $path = "works/"; $dont_show = Array("", "php", ".", ".."); $dir_handle = @opendir($path) or die("Error"); while($row = mysqli_fetch_array($results)){ echo '<li> <span>'.utf8_encode($row["client"
$path = "works/";
$dont_show = Array("", "php", ".", "..");
$dir_handle = @opendir($path) or die("Error");
while($row = mysqli_fetch_array($results)){
echo '<li>
<span>'.utf8_encode($row["client"]).'</span>
<ol>';
while ($file = readdir($dir_handle)){
$pos = strrpos($file,".");
$extension = substr($file, $pos);
if (!in_array($extension, $dont_show)) {
echo '<li><img src="'.$path . $file.'" /></li>';
}
}
closedir($dir_handle);
echo '</ol>
</li>';
}
因此,我试图垂直显示我的项目,水平显示每个项目的图像。但是我找不到解决办法,第二个虽然不起作用。。。谢谢,我为我的英语道歉
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($dir_handle))) {
}
/* This is the WRONG way to loop over the directory. */
while ($file = readdir($dir_handle)) {
}
为什么??
我们正在显式测试返回值是否与FALSE相同,因为否则,任何名称计算为FALSE的目录条目都将停止循环,例如名为0的目录
请参见您最好这样做:
<?php
$path = "works/";
$dont_show = array("", "php", ".", "..");
$dir_handle = @opendir($path) or die("Error");
// Store the file list from folder (but only the accepted ones)
$file_list = array();
while (($file = readdir($dir_handle)) !== false) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
if (!in_array($ext, $dont_show)) array_push($file_list, $file);
}
closedir($dir_handle);
// Now do your while loops
while($row = mysqli_fetch_array($results)){
echo "<li><span>" . utf8_encode($row['client']) . "</span><ol>";
foreach ($file_list AS $file) { // Loop stored values
echo "<li><img src=\"{$path}{$file}\" alt=\"\" /></li>";
}
echo "</ol>";
}
?>
请注意,使用echo text{$variable}text与使用echo text相同$变量文本。由于某种未知原因,您一直试图显示单个目录中的文件,而您显然需要不同的目录
因此,您必须在循环中移动opendir,并每次为相应的project images目录动态创建$path。这只是一个样式问题吗?如果不是,你的PHP问题是什么?如果您只是想让图像水平显示而不是垂直显示,那么您需要将的设置为display:inline,例如,您可以给自己一个ID,然后使用CSS myList li{display:inline;}CSS就可以了!第二个不工作时。。。感谢您在内部循环的第一次迭代之后关闭目录句柄。尝试移动closedir$dir\u句柄;外部循环结束后。谢谢,但不起作用:/噢,readdir在到达给定目录中的最后一个文件后不会返回到第一个文件。因此,您需要在内部循环中使用opendir,或者使用scandir提前将目录内容存储在数组中,而不是存储在任何循环中,然后再进行循环。说得好,但它仍然不能回答他/她的问题。santyas在第二个while循环中遇到问题。如果他能列出目录的内容就好了。无论如何,问题不在于readdir函数,而是将返回值计算为false。此处给定文件存在于目录中的原因可能是文件名计算为false的第一个原因之一。这就是为什么最好使用“价值和实物”比较进行检查。我发现了两个选项,您的解决方案和while进入全局while和pass$\u使用select*from获取表的所有id。。完成了!谢谢