I have a multidimensional array like this:
[
'user 1' => [
['item 4' => '11385'],
['item 2' => '144268'],
['item 1' => '65774'],
['item 9' => '98523'],
],
'user 5' => [
['item 8' => '239233'],
],
'user 2' => [
['item 4' => '53718'],
['item 1' => '154687'],
],
]
What I need to do is to simply sort my array first by users (first level keys), then by items (third level keys) ascending.
Desired result:
[
'user 1' => [
['item 1' => '65774'],
['item 2' => '144268'],
['item 4' => '11385'],
['item 9' => '98523'],
],
'user 2' => [
['item 1' => '154687'],
['item 4' => '53718'],
],
'user 5' => [
['item 8' => '239233'],
],
]
ksort
sorts by the key
$newArray = array();
# start by sorting users
$yourArray = ksort($yourArray);
# then sort sub items
foreach($yourArray as $user=>$theirItems) {
$theirItems = ksort($theirItems); # assuming you still want to sort by key;
$newArray[$user] = $theirItems;
}
var_dump($newArray);
Output: (Demo)
Warning: foreach() argument must be of type array|object, true given