ソートする必要があるFileSystemIteratorがあります。
次の並べ替え関数でuaSort関数を使用します。iterator_to_array(new FileSystemIterator($dir, FilesystemIterator::SKIP_DOTS))
function nameSort($a, $b) {
if($a->isDir() === $b->isDir()){
return strNatCaseCmp($a->getFilename(), $b->getFilename());
}
return $a->isDir() ? -1 : 1;
}
$dirに 1063 個のファイルとディレクトリがあり、nameSortが 11369 回呼び出され、ファイルのリストが平均約 6 秒で生成されます。item がディレクトリであるかどうかをさらにテストすることで、uaSortがnameSortをより多く呼び出すようになったと思いましたが、この仮定は間違っていました。
isDirの呼び出しが非常に遅いようです (リストが 10 倍遅くなります)。どうすればこれをスピードアップできますか?