vote up 0 vote down star

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.

flag
How do you want it to be sorted? – Gumbo Mar 15 '09 at 19:42

1 Answer

vote up 2 vote down check

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);
}
link|flag
Thanks a lot! Works perfectly! – warden Mar 15 '09 at 19:51
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 Mar 15 '09 at 19:56

Your Answer

Get an OpenID
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.