我在php中为自己写了一个图片库。
我使用'foreach'循环浏览图库文件夹并在主页面上显示缩略图。
我只想在主页上返回20个画廊(缩略图) - 但我希望这些20个是完全随机的。
所以 - 我知道我需要首先将我的图库文件夹名称读入数组,然后从该数组中随机化20个文件夹。我该怎么办呢?
我的部分代码目前看起来像这样:
$i = 0;
foreach(glob($galdir.'*', GLOB_ONLYDIR) as $dir) {
$thumbdir = ($dir . "/thumbs/");
echo "<div class=\"picture titleleft\">\n";
// echo "<div class=\"picture titleleft\" style=\"width:175px;\">\n";
echo '<a href="showgal.php?gallery='. $dir . '">
<img src="'.random_pic($thumbdir).'" alt="mypicturedlife gallery image" height="112px"></a>' . "\n";
$galname = str_replace(array("galleries/"), "", $dir);
$galleryname = str_replace(array("_"), " ", $galname);
echo "$galleryname\n";
echo "</div><!-- close picture titleleft -->\n";
if (++$i == 20) break;
}
你会看到我在循环之前有$ i = 0,然后在循环内的第20个国家休息。
这很好 - 但当然只返回前20个画廊而不是随机。
感谢。
答案 0 :(得分:1)
就像你说的那样,把所有文件夹放到一个数组中:
$dirs = glob($galdir . '*', GLOB_ONLYDIR);
然后使用shuffle()随机化数组中元素的顺序:
shuffle($dirs);
然后使用array_slice()选择/提取该数组的前20个:
$dirs = array_slice($dirs, 0, 20);
然后将这些目录/画廊输出到您的主页上,就像您使用foreach一样:
foreach($dirs as $dir) {
echo
'<div class="picture titleleft">' .
'<a href="showgal.php?gallery=' . $dir . '">
<img src="' . random_pic($dir . '/thumbs/') . '" alt="..." />' .
'</a>' .
str_replace(array("galleries/", "_"), array("", " "), $dir) .
'</div>';
}
答案 1 :(得分:0)
首先,将所有图库保存在数组中。
$storage = glob($galdir . '*', GLOB_ONLYDIR);
现在,将阵列洗牌。
shuffle($storage);
现在你有一个数组,其中所有的画廊都是随机排序的。再次穿过它们。
for($i = 0; $i < 20; $i++) { //Only 20
echo $storage[$i]; //Directory name. Add your HTML stuff here
}
答案 2 :(得分:0)
这个:http://php.net/manual/en/function.array-rand.php似乎是你需要的东西