php 中 globiterator 排序
问题描述:
在使用 php 的 globiterator 进行文件遍历时,遇到排序问题,返回的结果是无序的,希望按照自然顺序进行排序。
问题解答:
php 中对 glob 返回的结果进行排序有两种方法:使用 glob 函数的 flags 参数或使用 natsort 函数。
使用 glob 函数的 flags 参数:
立即学习“PHP免费学习笔记(深入)”;
glob('*.txt', glob_nosort);
设置 flags 参数为 glob_nosort 可以取消自动排序。
使用 natsort 函数:
$arr = glob('*.txt'); natsort($arr);
natsort 函数可以对字符串数组进行自然排序。
对于 globiterator,由于没有 flags 参数,无法直接修改排序规则。只能使用 iterator_to_array 方法将其转换为数组再进行排序:
$iterator = new GlobIterator('*.txt'); $arr = iterator_to_array($iterator); natsort($arr);
需要注意的是,将 globiterator 转换为数组会使其失去迭代器的意义。