我有以下数组:
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");
或者,您可以使用array_multisort()
对数组(子数组)中的这些值按升序排序。考虑这个例子:
$original_values = array( 'Bridge Work' => array( array('Name' => 'NJ Trunpike_Bridge Repair Work', 'Location' => 'New Jersey', 'State' => 'New Jersey'), array('Name' => 'Honoapiilani Highway Bridge Truss', 'Location' => 'Maui', 'State' => 'Hawaii'), array('Name' => 'BlueCross Blueshield of Tennessee (Bridge)', 'Location' => 'Memphis', 'State' => 'Tennessee'), array('Name' => 'Henderson Center Connector Bridge', 'Location' => 'Coquitlam', 'State' => 'British Columbia'), ), 'Educational' => array( array('Name' => 'RTI TASS Complex Admin Bldg', 'Location' => 'Bluffdale', 'State' => 'Utah'), array('Name' => 'Auburn High School', 'Location' => 'Auburn', 'State' => 'Washington'), array('Name' => 'Reed College', 'Location' => 'Portland', 'State' => 'Oregon'), array('Name' => 'Shorewood High School', 'Location' => 'Shoreline', 'State' => 'Washington'), ),);
$sorted_values = array();
foreach($original_values as $key => $value) {
$columns = null;
foreach ($value as $index => $element) {
$columns[] = $element['State'];
}
$temp = $value;
array_multisort($columns, SORT_ASC, $temp);
$sorted_values[$key] = $temp;
}
echo '<pre>';
print_r($sorted_values);
echo '</pre>';
样例代码