我正在尝试根据内部数组中的特定值对我的PHP哈希表进行排序。数据结构如下所示:
print_r($mydata); Array( [0] => Array ( [type] => suite [name] => A-Name ) [1] => Array ( [type] => suite [name] => C-Name ) [2] => Array ( [type] => suite [name] => B-Name ) )
我已经尝试过 ksort , sort , usort, 但是似乎没有任何作用。我正在尝试根据 名称键 向下两级进行排序。
这是我尝试使用usort的尝试:
function cmp($a, $b) { return $b['name'] - $a['name']; } usort($mydata, "cmp");
有没有简单的方法可以做到这一点,或者我需要编写一个自定义排序功能?
思考,更有用和实用的
function array_sort($array, $on, $order=SORT_ASC){ $new_array = array(); $sortable_array = array(); if (count($array) > 0) { foreach ($array as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { if ($k2 == $on) { $sortable_array[$k] = $v2; } } } else { $sortable_array[$k] = $v; } } switch ($order) { case SORT_ASC: asort($sortable_array); break; case SORT_DESC: arsort($sortable_array); break; } foreach ($sortable_array as $k => $v) { $new_array[$k] = $array[$k]; } } return $new_array; }
如何使用
$list = array( array( 'type' => 'suite', 'name'=>'A-Name'), array( 'type' => 'suite', 'name'=>'C-Name'), array( 'type' => 'suite', 'name'=>'B-Name') ); $list = array_sort($list, 'name', SORT_ASC); array(3) { [0]=> array(2) { ["type"]=> string(5) "suite" ["name"]=> string(6) "A-Name" } [2]=> array(2) { ["type"]=> string(5) "suite" ["name"]=> string(6) "B-Name" } [1]=> array(2) { ["type"]=> string(5) "suite" ["name"]=> string(6) "C-Name" } }