您好我正在寻找一个简单的解决方案来随机播放一系列随机数,然后从该范围中取5个数字并放入一个滑块。目前我的代码是这样的,它以无限循环结束:
$slides = range(1,30);
shuffle($slides);
$count = 0; //infinite loop guard
do{
foreach ($slides as $slide) {
echo "<img src=\"images/slider_".$slide.".jpg\" alt=\"\" />\n";
}
} while ($count<5);
Javascript中有很多例子,但我无法复制PHP。此代码用于为滑块生成随机图像,但一次仅限制为5张幻灯片。共有30张图片。
答案 0 :(得分:4)
所以这里的错误是你应该在循环内增加$count
;没有它,它的值被固定在0.此外,你正在迭代do {} while
内的完整值列表;也许这是有意的,但考虑到你一次要求5张幻灯片,我怀疑这是否正确。
不要用自己的循环拍摄自己的脚,只需要slice你需要的东西:
$slides = range(1,30);
shuffle($slides);
foreach (array_slice($slides, 0, 5) as $slide) {
echo "<img src=\"images/slider_".$slide.".jpg\" alt=\"\" />\n";
}
array_slice()
函数创建一个新数组,从索引0(第一项)开始,长度为5。
答案 1 :(得分:3)
当您使用增量计数器时,它更容易用于循环:
$slides = range(1,30);
shuffle($slides);
$count = 0; //infinite loop guard
for ( $count = 0 ; $count < 5 ; $count++){
foreach ($slides as $slide) {
echo "<img src=\"images/slider_".$slide.".jpg\" alt=\"\" />\n";
}
}
答案 2 :(得分:2)
你的循环中没有递增$count
,所以它总是为零。
答案 3 :(得分:1)
$slides = range(1,30);
shuffle($slides);
$count = 0; //infinite loop guard
do{
foreach ($slides as $slide) {
$count++;
echo "<img src=\"images/slider_".$slide.".jpg\" alt=\"\" />\n";
}
} while ($count<5);
很明显,这是一个无限循环因为你不增加$ count。使用$count++;
答案 4 :(得分:1)
增加$count
,例如:
foreach ($slides as $slide) {
echo "<img src=\"images/slider_".$slide.".jpg\" alt=\"\" />\n";
$count++;
}
答案 5 :(得分:1)
尝试:
$slides = range(1,30);
shuffle($slides);
for ($i = 0; $i < 5; $i++): ?>
<img src="images/slider_<?php echo $slides[$i]; ?>.jpg" alt="" /><br />
<?php endfor ?>