【问题标题】:Sort Parent array by child value按子值排序父数组
【发布时间】:2010-11-22 01:30:09
【问题描述】:

如何按任何子值(即:post_id、用户名等)对以下数组进行排序?

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
    )
)

【问题讨论】:

    标签: php arrays multidimensional-array sorting


    【解决方案1】:

    使用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 对不起,我的意思是如果你返回一个减去另一个,如果它们不同,它将给出负数或正数,如果它们相同,则为 0。有效满足排序回调的要求。
    • 字母比较呢?
    • 他们呢?如果您比较字符串,PHP 将使用字典顺序。 “狗”>“猫”。如果您想要其他类型的排序,只需再次定义您自己的比较函数。
    • 很有帮助,一直在找这个
    猜你喜欢
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多