根据内部值对多重校正数组进行排序


Sort multidemensional array by an inner value

我想使用PHP函数按status_id对数组进行排序。我该怎么办?

以下是阵列的示例:

Array
(
    [0] => stdClass Object
        (
            [status_id] => 4
            [status_content] => {"text":"DET VIRKER JO IKKE!!!! ### >"}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 20
        )
    [1] => stdClass Object
        (
            [status_id] => 2
            [status_content] => {"yt_vid":"Hb3MWuZT_W0","text":"Det her er jo bare awesome!!!"}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 20
        )
    [2] => stdClass Object
        (
            [status_id] => 8
            [status_content] => {"text":"Hej"}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 1
        )
    [3] => stdClass Object
        (
            [status_id] => 7
            [status_content] => {"text":"ff"}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 1
        )
    [4] => stdClass Object
        (
            [status_id] => 6
            [status_content] => {"text":"h"}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 1
        )
    [5] => stdClass Object
        (
            [status_id] => 5
            [status_content] => {"text":""}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 1
        )
    [6] => stdClass Object
        (
            [status_id] => 3
            [status_content] => {"yt_vid":"PSLDZVh1Vtw","text":"This is really funny"}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 1
        )
    [7] => stdClass Object
        (
            [status_id] => 1
            [status_content] => {"text":"This works, great! huh?"}
            [status_likes] => 
            [status_dislikes] => 
            [status_owner] => 1
        )
)

您需要使用array_multi-sort

http://php.net/manual/en/function.array-multisort.php

不过,首先循环获得玩具想要排序的所有项目的简单数组(状态id),然后将该变量与您想要在array_multi-sort 中排序的数组一起使用

一个选项是将usort与自定义排序函数一起使用。这里有一个小函数,它将根据一些属性名称为您构建一个闭包:

function buildSorter($key) {
    return function ($a, $b) use ($key) { return strnatcmp($a->$key, $b->$key); };
}

使用这个,你可以:

usort($data, buildSorter('status_content'));

usort($data, buildSorter('status_owner'));

同样轻松。

感谢您的帮助!我知道我终于找到了答案,因为我环顾四周。

看一看。

usort($r, function($a, $b) { return $a['status_id'] - $b['status_id']; });