按子值对父数组进行排序

4
我该如何按照子值(例如:post_id、username等)对以下数组进行排序?
Array(
[0] => Array
    (
        [id] => 10
        [post_id] => 398
        [user_id] => 0
        [view_date] => 2010-11-20 15:26:00
        [views] => 4
        [username] => <em>guest</em> 
    )

[1] => Array
    (
        [id] => 9
        [post_id] => 397
        [user_id] => 1
        [view_date] => 2010-11-19 23:35:39
        [views] => 1
        [username] => Fire G
    )

[2] => Array
    (
        [id] => 8
        [post_id] => 398
        [user_id] => 1
        [view_date] => 2010-11-19 23:35:26
        [views] => 4
        [username] => Fire G
    )

[3] => Array
    (
        [id] => 7
        [post_id] => 396
        [user_id] => 1
        [view_date] => 2010-11-19 23:07:57
        [views] => 3
        [username] => Fire G
    )

[4] => Array
    (
        [id] => 6
        [post_id] => 396
        [user_id] => 1
        [view_date] => 2010-11-19 23:07:55
        [views] => 3
        [username] => Fire G
    )

[5] => Array
    (
        [id] => 5
        [post_id] => 396
        [user_id] => 1
        [view_date] => 2010-11-19 23:07:52
        [views] => 3
        [username] => Fire G
    )

[6] => Array
    (
        [id] => 4
        [post_id] => 13
        [user_id] => 1
        [view_date] => 2010-11-19 22:59:35
        [views] => 1
        [username] => Fire G
    )

[7] => Array
    (
        [id] => 3
        [post_id] => 3
        [user_id] => 1
        [view_date] => 2010-11-19 22:59:28
        [views] => 1
        [username] => Fire G
    )

[8] => Array
    (
        [id] => 2
        [post_id] => 398
        [user_id] => 1
        [view_date] => 2010-11-18 11:37:20
        [views] => 4
        [username] => Fire G
    )

[9] => Array
    (
        [id] => 1
        [post_id] => 398
        [user_id] => 1
        [view_date] => 2010-11-18 11:37:16
        [views] => 4
        [username] => Fire G
    )
)
1个回答

6
使用uasort,它是一种用户定义的排序方法,可以让您提供自己的函数来定义哪个元素应该在另一个元素之前。 http://www.php.net/manual/en/function.uasort.php 您的比较函数可能如下所示:
function cmp($a, $b) {
    return $a['post_id'] > $b['post_id'] ? 1 : -1;
}

我不知道那是什么意思。文章ID之间的代数差异? - Dan Grossman
@Dan Grossman 抱歉,我的意思是如果你返回一个减去另一个的结果,如果它们不同,它将给出负数或正数,如果它们相同,则为0。有效地满足了排序回调函数的要求。 - alex
1
字母比较怎么样? - Jon Wolfe
1
它们呢?如果您比较字符串,PHP 将使用词典顺序。"dog" > "cat"。如果您想要其他类型的排序,只需再次定义自己的比较函数即可。 - Dan Grossman
非常有帮助,一直在寻找。 - Dean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接