数组排序php

数组排序php,php,arrays,sorting,Php,Arrays,Sorting,我有一个这样的数组 Array ( [0] => Array ( [result] => Array ( [0] => Array ( [type] => ABC [id] => 123232

我有一个这样的数组

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中有没有快速排序方法可以做到这一点?

有多种方法可以对数组排序,请参见:

有多种方法可以对数组排序,请参见:

您可以使用

下面的示例要求>=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;
谢谢大家的快速回复!想知道在这种情况下如何按降序排序吗?