но не проверял это:

ел пару вопросов (этот а такжеэтот вопрос), связанные с итераторами SPL, но я не уверен, что они полезны в моем случае, так как я использую довольно высокое расширениеRecursiveIteratorIterator;DirectoryTreeIterator.

Может ли кто-нибудь показать мне, как изменитьDirectoryTreeIterator или как отсортировать возвращенный массив по каталогу после того, как он был выведен итератором?

Метод правильной сортировки файлов непосредственно на сервере Apache также вариант для меня, если это возможно с помощью.htaccess например.

Это кодDirectoryTreeIterator из SPL:

/** @file directorytreeiterator.inc
 * @ingroup Examples
 * @brief class DirectoryTreeIterator
 * @author  Marcus Boerger
 * @date    2003 - 2005
 *
 * SPL - Standard PHP Library
 */

/** @ingroup Examples
 * @brief   DirectoryIterator to generate ASCII graphic directory trees
 * @author  Marcus Boerger
 * @version 1.1
 */

class DirectoryTreeIterator extends RecursiveIteratorIterator
{
    /** Construct from a path.
     * @param $path directory to iterate
     */
    function __construct($path) {
        parent::__construct(
            new RecursiveCachingIterator(
                new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_FILENAME
                ), 
                CachingIterator::CALL_TOSTRING|CachingIterator::CATCH_GET_CHILD
            ), 
            parent::SELF_FIRST
        );
    }

    /** @return the current element prefixed with ASCII graphics
     */ 
    function current() {
        $tree = '';
        for ($l=0; $l < $this->getDepth(); $l++) {
            $tree .= $this->getSubIterator($l)->hasNext() ? ' ' : ' ';
        }
        return $tree . ($this->getSubIterator($l)->hasNext() ? ' ' : ' ') 
               . $this->getSubIterator($l)->__toString();
    }

    /** Aggregates the inner iterator
     */ 
    function __call($func, $params) {
        return call_user_func_array(array($this->getSubIterator(), $func), $params);;
    }
}

Чтобы понять, почему я использую код выше, потому что он точно соответствует моим потребностям. Я хочу создать рекурсивное дерево каталогов с префиксом пробелов - оригинальный пример кода Маркуса Бергера добавляет некоторые элементы ASCI. Проблема в том, что у меня нет контроля над сортировкой файлов и каталогов, поэтому я бы хотел, чтобы дерево каталогов выглядело так:

dir001
  subdir001
    subdir002
      subfile001.jpg
  file001.png
  file002.png
  file003.png
dir002
  apple.txt
  bear.txt
  contact.txt
dir003
[...]

Вместо этого списки, возвращаемые итератором, не сортируются вообще, и это показывает мне что-то вроде этого:

dir002
  bear.txt
  apple.txt
  contact.txt
dir001
  subdir001
    subdir002
      subfile001.jpg
  file002.png
  file001.png
  file003.png
dir003
[...]

Поэтому я думаю, что решение, которое я ищу, - это способ вызова метода сортировки каждый раз, когда подкаталог индексируется и добавляется в дерево каталогов.

Надеюсь, я сделал это несколько яснее, так как не говорящему на нативе иногда трудно выразить мысли в связные предложения (или даже слова в этом отношении).

Ответы на вопрос(2)

Ваш ответ на вопрос