PHP图片显示
我有这样的脚本:PHP图片显示
<?php $count = 0;
foreach(glob("images/{*.gif,*.jpg,*.png,*.jpeg,*.bmp}", GLOB_BRACE) as $image)
while ($image)
{
if($count==3)
{
print "</tr>";
$count = 0;
}
if($count==0)
print "<tr>";
print "<td>";
?>
<img src="<?php echo $image;?>" width="80" height="80"/>
<?php
$count++;
print "</td>";
}
if($count>0)
print "</tr>";
?>
它应该拍摄的图像从一个文件夹(“图片”在这种情况下),并在一排显示他们3。但它显示一个图片1000000次。我该如何解决这个问题?我试图解决这个问题,我只知道问题在于“while”行。
回答:
尝试删除线
while($image)
注意,行
foreach(glob("images/{*.gif,*.jpg,*.png,*.jpeg,*.bmp}", GLOB_BRACE) as $image)
已经沿图像循环,当没有更多的目录将完成。
我打扫码一点点:
<?php $count = 0;
foreach(glob("images/{*.gif,*.jpg,*.png,*.jpeg,*.bmp}", GLOB_BRACE) as $image)
{
if($count==3)
{
print "</tr>";
$count = 0;
}
if($count==0)
print "<tr>";
print "<td>";
print "<img src=$image width=\"80\" height=\"80\"/>";
print "</td>";
$count++;
}
print "</tr>";
?>
回答:
的问题是,$image
不while循环过程中改变。因此,您在foreach
内部创建了一个无限循环,因为$image
继续评估为true。
while循环在代码中是不必要的,可以删除。您已经使用foreach
声明循环播放图像。
确保包装你的所有foreach
逻辑在大括号像这样:
foreach(glob("images/{*.gif,*.jpg,*.png,*.jpeg,*.bmp}", GLOB_BRACE) as $image) {
if($count==3)
{
print "</tr>";
$count = 0;
}
if($count==0)
print "<tr>";
print "<td>";
?>
<img src="<?php echo $image;?>" width="80" height="80"/>
<?php
$count++;
print "</td>";
}
if($count>0)
print "</tr>";
否则,它只是循环代码的下一直线。
回答:
您似乎在while
上的逻辑非常糟糕。你在说while $image exists
执行以下操作。那么$image
不会改变,这将导致while
永远继续。当脚本到达max_execution_time
时最可能发生。
您目前的代码被设计为重复图像。如果您不希望这样做,则必须删除foreach
中的while
循环。
另请注意,由于您没有大括号,因此只有while
将在foreach
中执行,并且if
语句将在完成后执行一次。如果不重复,请使用大括号作为foreach
以确保所有内容在您需要时运行。
这样:
foreach(glob("images/{*.gif,*.jpg,*.png,*.jpeg,*.bmp}", GLOB_BRACE) as $image) {
if($count==3)
{
print "</tr>";
$count = 0;
}
if($count==0)
print "<tr>";
print "<td>";
?>
<img src="<?php echo $image;?>" width="80" height="80"/>
<?php
$count++;
print "</td>";
}
if($count > 0)
print "</tr>";
以上是 PHP图片显示 的全部内容, 来源链接: utcz.com/qa/261883.html