views:

1251

answers:

1

Hi! I need to sort a multi-dimensional array which represents filesystem structure:

Array
(
    [dir1] => Array
        (
            [dir2] => Array
                (
                    [dir3] => Array
                        (
                            [dir4] => Array
                                (
                                    [0] => file1.php
                                    [1] => abc.php
                                )

                        )

                    [0] => file2.php
                    [1] => abc.php
                )

        )

    [abc] => Array
        (
            [abc] => Array
                (
                    [abc] => Array
                        (
                            [0] => file5.php
                        )

                )

        )

)

I have no idea what is the algorithm.

+2  A: 

http://fr.php.net/manual/fr/function.sort.php#51088

replace sort($a) at the beginning of the mulsort function by ksort($a)

EDIT: sorry, just change the mulsort code to :

function mulsort(&$a)
{
 ksort($a);
 foreach($a as &$value)
    if (is_array($value))
        mulsort($value);
}
Julian Aubourg
Thanks a lot! Works perfectly!
Well, you'll have a problem with directories or files because you must use different algorithms for the two of them (ksort for directories level, sort for files). IMO, the best options if to make files arrays more like "filename" => true rather than 0 => "filename" and apply the mulsort I just put.
Julian Aubourg