Сортировка многомерного ассоциативного массива для определенного ключа по его значению возрастает

У меня есть следующий массив:

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 ) ) ) 

Принимая во внимание key State и его value , я хочу сортировать его в порядке возрастания.

Ожидаемый результат:

 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 ) ) ) 

Мои попытки:

Использование usort() :

 function cmp($a, $b) { return $a["State"] - $b["State"]; } usort($project_archives, "cmp"); echo '<pre>'; print_r($project_archives); 

И используя цикл в сочетании с 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");