<?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($myarray, true), '</pre>';
#multi_array_sort($myarray, '[order]');
multi_array_sorti($myarray, '[colour]');
echo '<pre>AFTER sort: ', print_r($myarray, true), '</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($myarray, true), '</pre>';
multi_array_sort($myarray, '[something][order]', 1);
echo '<pre>AFTER sort: ', print_r($myarray, true), '</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
)
)
)