我有一个项目列表,我必须为每个项目显示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"]).'</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>';
}
所以,我试图垂直显示我的项目,并在每个水平方向上显示图像。但是我找不到解决方案,第二次不工作......谢谢,我为我的英语道歉。
答案 0 :(得分: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 " . $variable . " text"
相同。
答案 1 :(得分:0)
由于某些未知原因,您尝试始终显示单个目录中的文件,而您显然需要不同的文件。
因此,您必须在循环中移动opendir()
,并且每次为相应的项目图像目录动态创建$path
。
答案 2 :(得分:-1)
/* 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”的目录)。