文件夹中的图片库,图片数量有限

Image gallery from folder with limit of images

我在下面有一些代码,但我无法获得 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

设置的图像数量

您没有将 array_splice 应用到您的 $images 数组,而是应用到您的 $ignore 数组,它只包含 "."".."。此外,array_splice 用于数组中的 search/replace,您可能正在寻找 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 应包含 $images_filtered.

中的前 $limit

您的代码存在一些问题,例如使用 $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);
}