У меня есть следующий массив:
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");