我有一个包含图像的文件夹,并将它们回显到页面 这工作正常,但我希望他们在页面加载时随机更改输出 这是输出图像的部分:
<?php
$directory = 'somewhere/images/';
$files = getPathsByKind($directory,'svg');
if(!empty($files)) {
for($i=0; $i < 32; $i++){
echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
}
}
?>
所以我认为我必须使用rand()
或array_rand()
,但这两个都让我犯了错误。这很好,但我不知道如何解决它们。 rand()
抛出了第二个参数错误。 (max
和min
值)。由于这是图像,因此没有第二个参数。 <{1}}将无效,因为循环不再是array_rand()
。
关于如何做到这一点的任何想法?
答案 0 :(得分:2)
您是否可以使用shuffle
函数随机化数组,然后使用您的代码输出它们?
类似的东西:
<?php
$directory = 'somewhere/images/';
$files = getPathsByKind($directory,'svg');
if(!empty($files)) {
shuffle($files);
for($i=0; $i < 32; $i++){
echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
}
}
?>
答案 1 :(得分:2)
如果您只想要一张图片或想要随机排列所有图片,那么您的问题就不明确了。 (我随机顺序使用所有图像);
$directory = 'somewhere/images/';
$files = getPathsByKind($directory,'svg');
if(!empty($files)) {
shuffle($files); //randomly sort array
for($i=0; $i < 32; $i++){
echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
}
}
你可以在这里看到一个洗牌的例子
https://www.w3schools.com/php/func_array_shuffle.asp
PS
所以我认为我必须使用rand()或array_rand(),但这两个都让我犯了错误。哪个好,但我不知道如何解决它们
如果没有看到你所拥有的东西我只能猜测,我打赌你会尝试在array_rand()
以外的其他东西上做$files
(可能在循环内)。
和rand()
只会在$min
和$max
之间生成psudorandom数字,因此,如果您rand(1,10)
,则可以预期来自1-10
的数字。
答案 2 :(得分:1)
只需使用此
<?php
$directory = 'somewhere/images/';
$files = getPathsByKind($directory,'svg');
if(!empty($files)) {
shuffle($files); //This will sort your array....
for($i=0; $i < 32; $i++){
echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
}
}
?>
答案 3 :(得分:1)
好吧,我正在研究随机输出$ i值的可能性
您可以创建一个数字为0-> 32的数组并将其随机播放,使用foreach来回显图片。
将其插入if(!empty())语句中:
$arr = range(0,32);
shuffle($arr);
foreach($arr as $i){
echo '<img src="'.get_bloginfo('template_directory').'/images/'.$files[$i].'">';
}