<?php

show_source
(__FILE__);

Function 
multi_array_sort(&$arr$sortby$order=-1) {
  if (
$order != 1$order = -1;
  
$sortfunc create_function('$a,$b'"\$a1=\$a$sortby;\$b1=\$b$sortby; if (\$a1==\$b1) return 0; else return (\$a1<\$b1) ? $order : 0- $order;");
  
uasort($arr$sortfunc);
}
Function 
multi_array_sorti(&$arr$sortby$order=-1) {
  if (
$order != 1$order = -1;
  
$sortfunc create_function('$a,$b'"\$a1=strtolower(\$a$sortby);\$b1=strtolower(\$b$sortby); if (\$a1==\$b1) return 0; else return (\$a1<\$b1) ? $order : 0- $order;");
  
uasort($arr$sortfunc);
}

$myarray = array(
  
'blah' => array ('colour'=>'red''order'=>3),
  
'foo' => array ('colour'=>'blue''order'=>1),
  
'bar' => array ('colour'=>'Yellow''order'=>2),
  );

echo 
'<pre>BEFORE sort: 'print_r($myarraytrue), '</pre>';
#multi_array_sort($myarray, '[order]');
multi_array_sorti($myarray'[colour]');
echo 
'<pre>AFTER sort: 'print_r($myarraytrue), '</pre>';


# More complicated

$myarray = array(
  
'blah' => array ('colour'=>'red''something'=>array('boo'=>1'order'=>3)),
  
'foo' => array ('colour'=>'blue''something'=>array('boo'=>1'order'=>1)),
  
'bar' => array ('colour'=>'yellow''something'=>array('boo'=>1'order'=>2)),
  );
echo 
'<hr><pre>BEFORE sort: 'print_r($myarraytrue), '</pre>';
multi_array_sort($myarray'[something][order]'1);
echo 
'<pre>AFTER sort: 'print_r($myarraytrue), '</pre>';
BEFORE sort: Array
(
    [blah] => Array
        (
            [colour] => red
            [order] => 3
        )

    [foo] => Array
        (
            [colour] => blue
            [order] => 1
        )

    [bar] => Array
        (
            [colour] => Yellow
            [order] => 2
        )

)
AFTER sort: Array
(
    [foo] => Array
        (
            [colour] => blue
            [order] => 1
        )

    [blah] => Array
        (
            [colour] => red
            [order] => 3
        )

    [bar] => Array
        (
            [colour] => Yellow
            [order] => 2
        )

)

BEFORE sort: Array
(
    [blah] => Array
        (
            [colour] => red
            [something] => Array
                (
                    [boo] => 1
                    [order] => 3
                )

        )

    [foo] => Array
        (
            [colour] => blue
            [something] => Array
                (
                    [boo] => 1
                    [order] => 1
                )

        )

    [bar] => Array
        (
            [colour] => yellow
            [something] => Array
                (
                    [boo] => 1
                    [order] => 2
                )

        )

)
AFTER sort: Array
(
    [blah] => Array
        (
            [colour] => red
            [something] => Array
                (
                    [boo] => 1
                    [order] => 3
                )

        )

    [bar] => Array
        (
            [colour] => yellow
            [something] => Array
                (
                    [boo] => 1
                    [order] => 2
                )

        )

    [foo] => Array
        (
            [colour] => blue
            [something] => Array
                (
                    [boo] => 1
                    [order] => 1
                )

        )

)