PHP sort 2d array alphabetically by nested value

I have a PHP array that looks like this:

Array{ [0] { 'id' => '0', 'title' => 'foo', 'address' => '123 Somewhere', } [1] { 'id' => '1', 'title' => 'bar', 'address' => '123 Nowhere', } [2] { 'id' => '2', 'title' => 'barfoo', 'address' => '123 Elsewhere', } [3] { 'id' => '3', 'title' => 'foobar', 'address' => '123 Whereabouts', } } 

and I want to sort it by the "title" key in nested arrays to look like this:

 Array{ [1] { 'id' => '1', 'title' => 'bar', 'address' => '123 Nowhere', } [2] { 'id' => '2', 'title' => 'barfoo', 'address' => '123 Elsewhere', } [0] { 'id' => '0', 'title' => 'foo', 'address' => '123 Somewhere', } [3] { 'id' => '3', 'title' => 'foobar', 'address' => '123 Whereabouts', } } 

The values โ€‹โ€‹of the first level key do not matter, since I track each nested array through the nested key "id".

I played with ksort (), but without success.

+7
source share
1 answer

You should use usort () (I assume PHP 5.3+ here):

 usort($your_array, function ($elem1, $elem2) { return strcmp($elem1['title'], $elem2['title']); }); 

Edit: I did not notice that you want to keep the index association, so you really need to use uasort() instead with the same parameters.

Edit2: Here is the pre-PHP version 5.3:

 function compareElems($elem1, $elem2) { return strcmp($elem1['title'], $elem2['title']); } uasort($your_array, "compareElems"); 
+30
source

All Articles