【问题标题】:Glob array by number value按数值排列的全局数组
【发布时间】:2011-11-17 17:02:04
【问题描述】:

我正在使用 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

【问题讨论】:

标签: php arrays numbers glob


【解决方案1】:

看看natsort()

【讨论】:

  • 但现在它产生了冲突,当在$items = array_slice(glob('albums/*', GLOB_ONLYDIR), 0, 4); natsort($items); 中使用并且文件夹为 995,996,997,998,999,1000 时,它给出了 995,996,997 和 1000
  • 切片前需要先排序:$items = glob(..); natsort($items); $items = array_slice($items, 0, 4);
【解决方案2】:

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

natsort($array);

【讨论】:

    【解决方案3】:

    您可以在 glob 之后对数组进行排序:

    sort($items, SORT_NUMERIC);
    

    【讨论】:

      【解决方案4】:

      您可以像这样使用数组排序natsort() 来实现这一点;

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

      现在如果打印这个数组,那么你会得到正确的结果。

      print_r($items);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多