根据大数组中另一个数组的值对大数组进行排序


     {  "result": true,     
         "users": [{        
                    "id": 11,   
                    "expected_count": 13,
                    "user_id": 1,   
                    "event_id": 2, 
                    "user": {       
                        "id": 1, 
                        "name": "Moiz Jamali"       
                     }  
           },
         {      
            "id": 12,   
            "expected_count": 12,
            "user_id": 2,
            "event_id": 2,      
            "user": {       
                      "id": 2,  
                      "name": "Juzer Samiwala"      
             }  
        }] 
}

在我的大数组('users'(的输出之上。

我想做的是根据PHP中小数组('user'(中的名称值对这个大数组('ser'(进行排序。

有人能帮我吗?

谢谢。

您可以将usortstrcmp一起使用。类似这样的东西:

$bigArray = ["result" => true, "users" => [
    "id" => 11,
    "expected_count" => 13,
    "user_id" => 1,
    "event_id" => 2,
    "user" => [
        "id" => 1,
        "name" => "Moiz Jamali"
    ],
    ... other users
]];
usort($bigArray['users'], function ($a, $b)
{
    return strcmp($a['user']['name'], $b['user']['name']);
});

您必须使用带有自己函数的usort((对数组进行排序

解决方案:

<?php
$data = json_decode('{ "result": true, "users": [{ "id": 11, "expected_count": 13, "user_id": 1, "event_id": 2, "user": { "id": 1, "name": "Moiz Jamali" } }, { "id": 12, "expected_count": 12, "user_id": 2, "event_id": 2, "user": { "id": 2, "name": "Juzer Samiwala" } }] }');

function cmp($a, $b)
{
    if ($a->user->name == $b->user->name) {
        return 0;
    }
    return ($a->user->name < $b->user->name) ? -1 : 1;
}

usort($data->users, "cmp");
print_r($data);

实例

相关内容

  • 没有找到相关文章

最新更新