arrayをarray[*][b][c]の値でソート

<?php
function a_msort(&$a, $k, $o) {
    foreach ($k as $x) $y[] = var_export($x, 1);
    $r = "[" . implode("][", $y) . "]";
    $c = $o == 'a' ? '<' : '>';
    $f = create_function('$x, $y', "return \$x$r $c \$y$r ? -1 : (\$x$r == \$y$r ? 0 : 1);");
    return uasort($a, $f);
}

使い方

<?php
$a = array(
    a => array(i => 3, s => a),
    b => array(i => 1, s => b),
    c => array(i => 2, s => c),
    );
a_msort($a, array(i), a);
print_r($a);

//// 出力
// Array
// (
//     [b] => Array
//         (
//             [i] => 1
//             [s] => b
//         )
// 
//     [c] => Array
//         (
//             [i] => 2
//             [s] => c
//         )
// 
//     [a] => Array
//         (
//             [i] => 3
//             [s] => a
//         )
// 
// )