I have the following array:
Array
(
[Bridge Work] => Array
(
[0] => Array
(
[Name] => NJ Trunpike_Bridge Repair Work
[Location] => New Jersey
[State] => New Jersey
)
[1] => Array
(
[Name] => Honoapiilani Highway Bridge Truss
[Location] => Maui
[State] => Hawai
)
[2] => Array
(
[Name] => BlueCross Blueshield of Tennessee (Bridge)
[Location] => Memphis
[State] => Tennessee
)
[3] => Array
(
[Name] => Henderson Center Connector Bridge
[Location] => Coquitlam
[State] => British Columbia
)
)
[Educational] => Array
(
[0] => Array
(
[Name] => RTI TASS Complex Admin Bldg
[Location] => Bluffdale
[State] => Utah
)
[1] => Array
(
[Name] => Auburn High School
[Location] => Auburn
[State] => Washington
)
[2] => Array
(
[Name] => Reed College
[Location] => Portland
[State] => Oregon
)
[3] => Array
(
[Name] => Shorewood High School
[Location] => Shoreline
[State] => Washington
)
)
)
Taking in consideration key
State
and its value
, I want to sort it in ascending order.
Expected output:
Array
(
[Bridge Work] => Array
(
[0] => Array
(
[Name] => Henderson Center Connector Bridge
[Location] => Coquitlam
[State] => British Columbia
)
[1] => Array
(
[Name] => Honoapiilani Highway Bridge Truss
[Location] => Maui
[State] => Hawai
)
[2] => Array
(
[Name] => NJ Trunpike_Bridge Repair Work
[Location] => New Jersey
[State] => New Jersey
)
[3] => Array
(
[Name] => BlueCross Blueshield of Tennessee (Bridge)
[Location] => Memphis
[State] => Tennessee
)
)
[Educational] => Array
(
[0] => Array
(
[Name] => Reed College
[Location] => Portland
[State] => Oregon
)
[1] => Array
(
[Name] => RTI TASS Complex Admin Bldg
[Location] => Bluffdale
[State] => Utah
)
[2] => Array
(
[Name] => Auburn High School
[Location] => Auburn
[State] => Washington
)
[3] => Array
(
[Name] => Shorewood High School
[Location] => Shoreline
[State] => Washington
)
)
)
My attempts:
Using usort()
:
function cmp($a, $b)
{
return $a["State"] - $b["State"];
}
usort($project_archives, "cmp");
echo '<pre>'; print_r($project_archives);
And using a loop combined with asort()
:
function aasort(&$array, $key)
{
$sorter = array();
$ret = array();
reset($array);
foreach ($array as $ii => $va) {
$sorter[$ii] = $va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii] = $array[$ii];
}
$array = $ret;
return $array;
}
$sort = aasort($project_archives, "State");