文件夹中的图片库,图片数量有限
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);
}
我在下面有一些代码,但我无法获得 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);
}