下面有一些代码,但是我无法使用array_splice来限制显示的图像数量。
<?php
$id = $_GET['id'];
if (empty($id)) {
$clientname = 'tazz';
} else {
$clientname = $_GET['id'];
}
$total = $_GET['limit'];
if (empty($total)) {
$limit = '100';
} else {
$limit = $_GET['limit'];
}
$basefolder = "client/client-galleries/";
$dirname = $basefolder.$clientname."/";
$images = scandir($dirname);
sort($images);
//shuffle($images);
$ignore = array(".", "..");
$output = array_splice($ignore, 0, $limit);
foreach($images as $curimg) {
if(!in_array($curimg, $output)) {
echo "
<div class='gallery'>
<img src='[[pThumb? &input=`$dirname$curimg` &options=`&w=300&h=300&zc=1&q=95&fltr[]=wmi|./client/images/gallery-watermark-white.png|BL|50|25|200`]]' alt='$curimg'>
<div class='desc'></div>
</div>\n ";
}
}
这会正确显示图库中的图像,但不会限制http://website.address?id=client&limit=5
设置的图像数量答案 0 :(得分:0)
您未将array_splice
应用于$images
数组,而是应用于$ignore
数组,该数组仅包含"."
和".."
。此外,array_splice
用于在数组中搜索/替换,您可能正在寻找array_slice
,它用于获取数组的特定部分。
如果您使用array_diff
从$images
中移除不需要的值,则可以使用array_slice
仅保留最多$limit
张图片。像这样:
$images = scandir($dirname);
$ignore = array(".", "..");
$images_filtered = array_diff($images, $ignore);
$images_limited = array_slice($images_filtered, 0, $limit);
$images_filtered
应包含$images
中不在$ignore
内的所有项目。
$images_limited
应包含$limit
中的第一个$images_filtered
项。
答案 1 :(得分:0)
您的代码存在一些问题,例如使用$ ignore数组而不是$ images数组。我做了一些改变,可能更接近你所追求的。
$limit = 5;
$dirname = "...";
$images = array_diff(scandir($dirname), [".", ".."]);
sort($images);
$limitedImages = array_slice($images, 0, 5);
foreach ($limitedImages as $curimg) {
var_dump($curimg);
}