php - 带有数组过滤的目录列表回显
问题描述
这段代码有效:
<?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"
]
但是我想对每个日期进行某些过滤(仅名称以日期开头的图像> =比今天),因为所有 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);
}
?>
但我得到的回声就像一个由所有图像名称组成的巨大名称。我只是无法以相同的格式获得回声。
解决方案
您正在为每个图像回显一个 JSON 字符串。
而不是这个:
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);
您可以不用*
在过滤器中使用,而是使用今天的日期作为文件名的一部分,以避免必须循环访问。
推荐阅读
- oracle - 了解 Oracle 执行计划中每个步骤的成本
- java - Node.js 中 Java 的 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 等效项
- r - 如何在列之间交换数据?
- python - 构建游戏,需要关于库存的建议
- vim - 在 Vim 中关闭拆分窗口的问题
- html - 没有侧容器的 Angular 7 响应式“垫子工具栏”
- go - 如何调用此调用?
- matlab - 获取一个 .m 文件的值并使用这些值在 MATLAB GUI 中绘图
- python - 在执行 stats.ttest_ind 时为 /: 'str' 和 'int' 键入错误不支持的操作数类型
- python - 如何根据Python中的不同行索引取平均值