【问题标题】:Sort JSON object in PHP by a key value [duplicate]按键值对PHP中的JSON对象进行排序[重复]
【发布时间】:2014-07-09 20:56:49
【问题描述】:

我需要通过 PHP 脚本中的“分数”值对此类信息进行排序,我该怎么做? :

Array
(
 [0] => stdClass Object
    (
        [name] => Morts par Déshydratation
        [score] => 4
        [id] => dwater
    )

 [1] => stdClass Object
    (
        [name] => Réparations de chantiers
        [score] => 87
        [id] => brep
    )

 [2] => stdClass Object
    (
        [name] => Campeur téméraire
        [score] => 77
        [id] => camp
    )

 [3] => stdClass Object
    (
        [name] => Décoration
        [score] => 112
        [id] => deco
    )
)

PS : 这已经是 PHP 值了,我已经用过 json_decode.*

【问题讨论】:

    标签: php json sorting


    【解决方案1】:

    $data 看起来像这样:

    Array
    (
        [0] => stdClass Object
            (
                [name] => Morts par Déshydratation
                [score] => 4
                [id] => dwater
            )
    
        [1] => stdClass Object
            (
                [name] => Réparations de chantiers
                [score] => 87
                [id] => brep
            )
    
        [.] => ....
    )
    

    您可以使用usort() 对数组进行排序:

    <?php                                                                                                                                                                                                       
    usort($data, function($a, $b) { //Sort the array using a user defined function
        return $a->score > $b->score ? -1 : 1; //Compare the scores
    });                                                                                                                                                                                                        
    
    print_r($data);   
    ?>
    

    输出:

    Array
    (
        [0] => stdClass Object
            (
                [name] => Décoration
                [score] => 112
                [id] => deco
            )
    
        [1] => stdClass Object
            (
                [name] => Réparations de chantiers
                [score] => 87
                [id] => brep
            )
    
        [2] => stdClass Object
            (
                [name] => Campeur téméraire
                [score] => 77
                [id] => camp
            )
    
        [3] => stdClass Object
            (
                [name] => Drogues
                [score] => 49
                [id] => drug
            )
    
        [4] => stdClass Object
            (
                [name] => Ouverture de porte
                [score] => 11
                [id] => door
            )
    
        [5] => stdClass Object
            (
                [name] => Morts par Déshydratation
                [score] => 4
                [id] => dwater
            )
    
    )
    

    【讨论】:

    • 谢谢,但它不起作用。我使用的数据已经是 PHP 值,而不是 JSON。当我将你的函数应用于它时,它只会给出“1”作为输出。
    • 您能否使用 PHP 值而不是 JSON 值更新您的问题,以便我可以看到我们正在处理的数据是什么样的?
    • 是的,你去,对不起^^
    • 不用担心。检查我的编辑
    • 非常感谢,它有效!
    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2016-06-05
    • 2020-12-04
    • 1970-01-01
    • 2021-04-03
    • 2012-01-17
    • 1970-01-01
    相关资源
    最近更新 更多