数组排序php
我有一个这样的数组 Array ( [0] => Array ( [result] => Array ( [0] => Array ( [type] => ABC [id] => 123232 [name] => Apple ) [1] => Array ( [type] => DEF [id] => 2323232 [name] => Banana ) ) [title] => Cool [rank] => 2 ) [1] => Array ( [result] => Array ( [0] => Array ( [type] => ZX [id] => 3223 [name] => Danny ) [1] => Array ( [type] => QWER [id] => 2323232 [name] => Cactus ) ) [title] => Hot [rank] => 1 ) [3].. [4]..and son on 大堆 ( [0]=>阵列 ( [结果]=>数组 ( [0]=>阵列 ( [类型]=>ABC [id]=>123232 [名称]=>苹果 ) [1] =>阵列 ( [类型]=>DEF [id]=>23232 [名称]=>香蕉 ) ) [标题]=>酷 [排名]=>2 ) [1] =>阵列 ( [结果]=>数组 ( [0]=>阵列 ( [类型]=>ZX [id]=>3223 [姓名]=>丹尼 ) [1] =>阵列 ( [类型]=>QWER [id]=>23232 [名称]=>仙人掌 ) ) [标题]=>热门 [排名]=>1 ) [3].. [4] …还有儿子数组排序php,php,arrays,sorting,Php,Arrays,Sorting,我有一个这样的数组 Array ( [0] => Array ( [result] => Array ( [0] => Array ( [type] => ABC [id] => 123232
我想按排名排序,PHP中有没有快速排序方法可以做到这一点?有多种方法可以对数组排序,请参见:有多种方法可以对数组排序,请参见:您可以使用 下面的示例要求>=PHP5.3。如果没有此版本,只需向回调传递一个引用即可
usort($array, function($a, $b) {
return $a['rank'] - $b['rank'];
}
你可以用
下面的示例要求>=PHP5.3。如果没有此版本,只需向回调传递一个引用即可
usort($array, function($a, $b) {
return $a['rank'] - $b['rank'];
}
您可以使用以下功能:
function cmp($a, $b) {
return $a['rank'] - $b['rank'];
}
$arr = /* your array */
usort($arr, "cmp");
function cmp($a, $b) {
return $b['rank'] - $a['rank'];
^^ ^^
}
要按降序排序(在注释中询问问题),只需在比较函数中颠倒顺序:
function cmp($a, $b) {
return $a['rank'] - $b['rank'];
}
$arr = /* your array */
usort($arr, "cmp");
function cmp($a, $b) {
return $b['rank'] - $a['rank'];
^^ ^^
}
您可以使用以下功能:
function cmp($a, $b) {
return $a['rank'] - $b['rank'];
}
$arr = /* your array */
usort($arr, "cmp");
function cmp($a, $b) {
return $b['rank'] - $a['rank'];
^^ ^^
}
要按降序排序(在注释中询问问题),只需在比较函数中颠倒顺序:
function cmp($a, $b) {
return $a['rank'] - $b['rank'];
}
$arr = /* your array */
usort($arr, "cmp");
function cmp($a, $b) {
return $b['rank'] - $a['rank'];
^^ ^^
}
@codaddick;我真的不明白它在所有排序方法中是如何工作的
$a-$b
;请您描述一下或给我一个链接underatand@diEcho如果两者相等,则比较函数只需返回0
,如果第一个元素较低,则返回值<0
,如果第一个元素较低,则返回值>0
高于第二个。由于列组是数值的,$a-$b
可以实现这一点。@diEcho如果它们相等,将返回0
,如果$a
较小,将返回负数,如果$a
较大,将返回正数。@diEcho:比较函数必须返回小于的整数,如果第一个参数被认为分别小于、等于或大于第二个参数,则等于或大于零。可以使用else来实现它,但更简单的方法是执行返回$a-$b;
谢谢大家的超快速回复!想知道如何按降序排列这种情况吗?@codaddick;我真的不知道d它在所有排序方法中是如何工作的$a-$b
;请描述一下或给我一个链接underatand@diEcho如果两者相等,则比较函数只需返回0
,如果第一个元素较低,则返回值<0
,如果第一个元素高于第二个元素,则返回值>0
。因为ks是数值的$a-$b
可以实现这一点。@diEcho如果它们相等,将返回0
,如果$a
较小,将返回负数,如果$a
较大,将返回正数。@diEcho:比较函数必须返回小于、等于或大于零的整数,如果第一个参数被认为分别小于、等于或大于第二个参数。可以使用其他参数来实现,但更简单的方法是执行返回$a-$b;
谢谢大家的快速回复!想知道在这种情况下如何按降序排序吗?