这段代码有效:
<?php
header('Access-Control-Allow-Origin: *');
$imagesDir = '';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
echo json_encode($images, JSON_UNESCAPED_UNICODE);
?>
我在文件夹中找到所有jpg的正确回声,如下所示:
[
"20180515_xxxxxxx.jpg",
"20180517_yyyyyyy.jpg",
"20180519_zzzzzzzz.jpg"
]
但我希望每个日期进行一定的过滤(只有名称以日期&gt; =比今天开始的图像),因为所有的jpg文件名都以其名称中的yyyymmdd
开头。
我正在尝试这样的事情:
<?php
header('Access-Control-Allow-Origin: *');
$imagesDir = '';
$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
foreach($images as $image) {
$current_date = date("Ymd");
$file_date = substr($image, 0, 8);
if (strcmp($current_date, $file_date)>=0)
echo json_encode($image, JSON_UNESCAPED_UNICODE);
}
?>
但我得到的回声就像一个巨大的名字由所有图像名称组成。 我只是不能以相同的格式得到回声。 :(
答案 0 :(得分:1)
您正在回显每个图像的JSON字符串。
而不是:
ConstraintLayout 2.0
尝试添加数组并收集它们。
foreach($images as $image) {
$current_date = date("Ymd");
$file_date = substr($image, 0, 8);
if (strcmp($current_date, $file_date)>=0)
echo json_encode($image, JSON_UNESCAPED_UNICODE);
}
您可以在过滤器中使用$filteredImages = [];
foreach($images as $image) {
$current_date = date("Ymd");
$file_date = substr($image, 0, 8);
if (strcmp($current_date, $file_date)>=0)
$filteredImages[] = $image
}
echo json_encode($filteredImages, JSON_UNESCAPED_UNICODE);
,而不是使用今天的日期作为文件名的一部分,以避免不得不循环使用。
答案 1 :(得分:0)
你有一个数组,你想过滤它。
有一个名为array_filter
的内置函数,它接收一个数组,你可以提供一个回调函数。
我还建议将日期转换为实际的DateTime对象。好处是您可以将if语句中的DateTimes与所有比较运算符进行比较:
<?php
function parseDate(string $date, $format = "Ymd")
{
return DateTime::createFromFormat($format, $date)
->setTime(0, 0, 0);
}
$today = (new DateTime())->setTime(0, 0);
$filterCallback = function (string $file) use ($today): bool {
$rawDate = explode("_", $file)[0]; // assumes all your date in the filename are followed up by at least one underscore
$date = parseDate($rawDate);
return $date >= $today;
};
$files = [
"20180515_xxxxxxx.jpg",
"20180517_yyyyyyy.jpg",
"20180519_zzzzzzzz.jpg",
"20250519_zzzzzzzz.jpg",
];
$filteredFiles = array_filter($files, $filterCallback);
foreach ($filteredFiles as $file) {
echo "$file\n";
}
将输出:
20180519_zzzzzzzz.jpg
20250519_zzzzzzzz.jpg