user2827048 user2827048 - 2 months ago 5
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

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');
Comments