PHP中的多种关联数组
考虑以下关联数组
$arr = Array ( [banana] => 2 [cherry] => 1 [orange] => 3 [grapefruit] => 1 [apple] => 1 ) 我想以类似于PLSQL术语的方式进行排序:A DESC,B ASC $arr = Array ( [orange] => 3 [banana] => 2 [apple] => 1 [cherry] => 1 [grapefruit] => 1 ) 所以橙子和香蕉是第一个因为VALUE,但随后苹果,樱桃和葡萄柚按字母顺序排列,因为它们有相同的值. 我试过的 function cmp($a,$b) { foreach ($a as $key1 => $val1) { foreach ($b as $key2 => $val2) { if($val1 == $val2){ return strcmp($key1,$key2); } else if ($val1 > $val2){ return 1; } else{ // $val1 < $val2 return -1; } } } } 并用usort()打电话,但也没有工作. 所以我的问题是:是否有一个实现请求行为的PHP方法? 对于欧根: Array ( [lamb] => 3 [rule] => 1 [children] => 1 [teacher] => 2 [eager] => 1 ) 并排序后: Array ( [children] => 1 [eager] => 1 [rule] => 1 [teacher] => 2 [lamb] => 3 )
你可以使用
array_multisort
<?php $arr = Array ( 'banana' => 2,'cherry' => 1,'orange' => 3,'grapefruit' => 1,'apple' => 1 ); $values = array_values($arr); $keys = array_keys($arr); //first sort by values desc,then sort by keys asc array_multisort($values,SORT_DESC,$keys,SORT_ASC,$arr); print_r($arr); // output: /* Array ( [orange] => 3 [banana] => 2 [apple] => 1 [cherry] => 1 [grapefruit] => 1 ) */ ?> 它的工作原理如下: >为每列用于排序(值和键),创建新的1d数组及其内容 (也许你会发现this explanation更容易理解) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |