【发布时间】:2015-03-30 07:59:15
【问题描述】:
我正在开发一个 glob 画廊,它会显示每个月的偶数(如图所示)。 这是我这样做的代码:
$folderGlob = glob("gallery/events/2015/*/");
foreach($folderGlob as $folder){
$fileglob = glob($folder . "*.{jpg,png}", GLOB_BRACE);
foreach($fileGlob as $file){
// lets say i dont have images, but i just echo $file
echo $file;
}
}
输出将是这样的:
gallery/events/2015/01/01.jpg
gallery/events/2015/02/04.jpg
gallery/events/2015/03/09.jpg
gallery/events/2015/04/21.jpg
gallery/events/2015/05/04.jpg
gallery/events/2015/06/09.jpg
gallery/events/2015/07/21.jpg
... etc
你可以看到我的地图结构就像一个日期,文件名是天,地图名是月份。现在我需要对其进行排序,以便首先显示当前的 mont。
这里是我想要的例子:
gallery/events/2015/03/09.jpg //current month
gallery/events/2015/04/21.jpg
gallery/events/2015/05/04.jpg
gallery/events/2015/06/09.jpg
gallery/events/2015/07/21.jpg
...
gallery/events/2015/12/02.jpg //lastmonth
gallery/events/2015/01/01.jpg
gallery/events/2015/02/04.jpg
任何提示或技巧?
编辑: 我现在用这个:
$currentMonth = date("m");
$month = intval($currentMonth);
foreach ($folderGlob as $folder) {
$folderMonth = intval(basename($folder));
if($folderMonth < $month){
continue;
} else {
print $folderMonth . '<br>';
}
}
foreach ($folderGlob as $folder) {
$folderMonth = intval(basename($folder));
if($folderMonth >= $month){
continue;
} else {
print $folderMonth . '<br>';
}
}
输出是:
gallery/2015/03/
gallery/2015/04/
gallery/2015/05/
gallery/2015/06/
gallery/2015/07/
gallery/2015/08/
gallery/2015/09/
gallery/2015/10/
gallery/2015/11/
gallery/2015/12/
gallery/2015/01/
gallery/2015/02/
【问题讨论】:
-
要么你需要将文件放在一个数组中,然后在显示之前对其进行排序;或先进行几个测试以检查当前日期文件,然后在循环中使用 if 测试来抑制当前日期
-
好吧,glob 是一个数组,我知道如何使用 if 语句跳过,但是可以说我在本月之前跳过了所有一次,我仍然需要它们在循环完成最后一个后显示月
标签: php arrays sorting foreach glob