按数字值对全局数组进行分组

3
我正在使用glob方法将我的子目录转换为数组。
<?php
$items = glob("../albums/*", GLOB_ONLYDIR);
foreach($items as $item) {
    echo "$item\n ";
}
?>

他按字母顺序排序,我希望按数字排序。
如果我有名为1、3、5、10的子目录,
它们将被这样排列:10,1,3,5。
我想让它们像这样:1,3,5,10。
有什么选项吗?谢谢。
编辑:
现在我找到了natsort($files);
当我用它和:
$items = array_slice(glob('albums/*', GLOB_ONLYDIR), 0, 4);
natsort($items);

我的文件夹编号是995-1000。 它给了我这个数组:995,996,997,1000。


1
你尝试过使用sort()函数吗?http://php.net/manual/zh/function.sort.php - kasper Taeymans
我不知道这会带来什么,但你尝试过 GLOB_NOSORT 吗? - Geoffroy
4个回答

8
请查看natsort()函数的文档

但现在它在使用 $items = array_slice(glob('albums/*', GLOB_ONLYDIR), 0, 4); natsort($items); 时出现了冲突,而文件夹是995、996、997、998、999、1000,它只显示了995、996、997和1000。 - Elad
1
在切片之前,您需要进行排序:$items = glob(..); natsort($items); $items = array_slice($items, 0, 4); - Niko

5

使用 natsort 对数组按自然顺序进行排序:

natsort($array);

1
你可以在 glob 后对数组进行排序:
sort($items, SORT_NUMERIC);

1

您可以通过使用数组排序natsort()来实现此目的,如下所示:

$items = glob("../albums/*", GLOB_ONLYDIR);
natsort($items);

现在,如果打印这个数组,你就可以得到正确的结果。
print_r($items);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接