【问题标题】:How to sort folders based on content in a file within them如何根据文件夹中文件中的内容对文件夹进行排序
【发布时间】:2014-06-08 22:10:59
【问题描述】:

我正在编写一个 PHP 脚本,它显示存储在目录树中的文档。

我的目录树看起来有点像这样:

* mainfolder1
    + subfolder1
        - subsubfolder1
        - subsubfolder2
    + subfolder2
        - subsubfolder3
        - subsubfolder4

在每个subsubfolder 中都有一个名为data.dat 的文件,其中包含一个编号

我想创建一个数组,根据data.dat 中的数字对这些目录进行排序

谁能帮帮我?

【问题讨论】:

  • 您是否考虑过在目录名称中使用该数字?
  • 这个非常相似的问题可能会有所帮助:stackoverflow.com/questions/14668637/…
  • 经常这样做效率很低,您应该考虑将排序顺序存储在其他位置

标签: php sorting directory


【解决方案1】:

您可以使用RecursiveIteratorIterator 类遍历主目录,然后使用RegexIterator 过滤结果。之后只需按照您想要的方式对数组进行排序即可。

这是一个例子:

<?php 

$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.'));
$dataFiles = new RegexIterator($iterator, '/data.dat$/i', RecursiveRegexIterator::GET_MATCH);
$directories = array();

foreach($dataFiles as $name => $object){
    $directories[dirname($name)] = (int) file_get_contents($name);
}

asort($directories);
print_r(array_keys($directories));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 2017-07-18
    • 2020-04-19
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多