user2827048 user2827048 - 1 year ago 47
PHP Question

How to sort an array of arrays by a key in PHP?

Array(
["car"] => Array(
[12/11/1989] => (...)
[6/14/2011] => (...)
[5/2/2012] => (...)
)
["sled"] => Array(
[1/15/2001] => (...)
[4/14/2004] => (...)
[5/23/2005] => (...)
)
["boat"] => Array(
[12/1/1999] => (...)
[6/14/2000] => (...)
[8/23/2000] => (...)
)
)


Given the above array structure, I am trying to sort the keys
["boat"], ["sled"], ["car"]
by the first date key in their respective sub-arrays. So the correct key order would now be car, boat, sled. Is there an elegant or easy way to do this with PHP?

Answer Source

Use uasort() to sort the array with a user-supplied comparison function, keeping the keys of the associative array.

function compare_first_key_date($a, $b) {
    $a_keys = array_keys($a);
    $a_date = strtotime($a_keys[0]);
    $b_keys = array_keys($b);
    $b_date = strtotime($b_keys[0]);
    return $a_date - $b_date;
}
uasort($array, 'compare_first_key_date');