Php 按键排序数组

Php 按键排序数组,php,Php,有人能帮我吗?我想订购这个多维数组项目[] 按“rel”键 print_r ($items) will output: Array( [36] => Array ( [id] => 36 [name] => mp4 [total_items] => 58 [rel] => 5.3015 ) [61] => Array ( [id] =>

有人能帮我吗?我想订购这个多维数组项目[] 按“rel”键

print_r ($items) will output:



 Array(

 [36] => Array
    (
        [id] => 36
        [name] => mp4
        [total_items] => 58
        [rel] => 5.3015
    )

[61] => Array
    (
        [id] => 61
        [name] => mp3
        [total_items] => 61
        [rel] => 21.7269
    )

[63] => Array
    (
        [id] => 63
        [name] => avi
        [total_items] => 43
        [rel] => 2.254
    )
 )
而我需要的是:先[61]秒[36],然后[63]

谢谢大家!

以下是我使用的:

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;
}
所以你可以这样使用它:

array_sort($items, 'rel');

有一个函数,它被调用

请参阅的文档中的第一个和第二个示例,并对其进行调整,可能如下所示:

function cmp($a, $b)
{
    if ($a['rel'] == $b['rel']) {
        return 0;
    }
    return ($a['rel'] < $b['rel']) ? -1 : 1;
}

uasort($your_array, "cmp");
函数cmp($a,$b)
{
如果($a['rel']=$b['rel']){
返回0;
}
回报($a['rel']<$b['rel'])?-1:1;
}
uasort($your_数组,“cmp”);
有帮助吗

编辑:

此外,如果您的PHP版本高于5.3,则可以使用:

uasort($u数组,函数($a,$b){
如果($a['rel']=$b['rel']){
返回0;
}
回报($a['rel']<$b['rel'])?-1:1;
});
EDIT2:

我犯了一个错误:
usort()
用于排序,但没有维护键关联(请参阅),
uasort()
函数就是您所需要的。我已经更正了上面的示例。

尝试
usort()
,编写您自己的小回调比较函数


这基本上只是对单个数组进行排序,否?否:“array_multisort()可用于同时对多个数组进行排序,或按一个或多个维度对多维数组进行排序。”参考:这是一个多维数组。
$a['rel']
是如何存在的?
$a
$b
只是已排序数组的元素。因为这些元素本身就是数组,所以它们也有键(除非它们是空的)——在本例中,数组的每个元素都有
rel
key。是否足够清楚?考虑到人们在这里要求它的频率,应该将其添加到php的标准库中。@PMV他们要求,因为他们不阅读文档;)有一个函数允许您在不需要太多代码的情况下执行此操作。使用它更简单。@Tadek,您只能在更新版本的中使用anon函数php@Neal但是你可以使用
usort()
,因为PHP4,而PHP5.3现在已经很老了(在2009年上半年发布)-算了吧,它肯定不是什么“新的”@Neal更正:在这种情况下,它是关于
uasort()
函数的。
function cmp($a, $b)
{
    if ($a['rel'] == $b['rel']) {
        return 0;
    }
    return ($a['rel'] < $b['rel']) ? -1 : 1;
}

uasort($your_array, "cmp");
uasort($your_array, function($a, $b){
    if ($a['rel'] == $b['rel']) {
        return 0;
    }
    return ($a['rel'] < $b['rel']) ? -1 : 1;
});