php – 使用两个条件自定义排序数组数组

前端之家收集整理的这篇文章主要介绍了php – 使用两个条件自定义排序数组数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下数组:
$arr = [
    [
        'user_id' => 1,'product_id' => 1
    ],[
        'user_id' => 1,'product_id' => 2
    ],'product_id' => 3
    ],[
        'user_id' => 2,[
        'user_id' => 3,'product_id' => 1
    ]
];

我想对它进行排序,看起来像这样:

$arr = [
    [
        'user_id' => 1,'product_id' => 3
    ]
];

所以基本上我需要通过product_id和user_id进行排序,以便在继续下一个之前从每个用户中选择较低数量的product_id.

我尝试使用usort但是我无法让它工作.

usort($campaigns,function($a,$b){
    if($a['product_id'] == $b['product_id']){
        return 0;
    }

    if($a['product_id'] < $b['product_id']){

        if($a['user_id'] == $b['user_id']){
            return 1;
        }

        if($a['user_id'] < $a['user_id']){
            return 0;
        }

        return -1;
    }else{

        if($a['user_id'] == $a['user_id']){
            return -1;
        }

        if($a['user_id'] < $a['user_id']){
            return 0;
        }

        return 1;
    }
});

我也尝试过array_multisort,但我能做到的就是使用我已从数据库中检索的相同顺序进行排序.

假设你的值是整数:
usort($campaigns,$b){
    if($a['product_id'] == $b['product_id']){
        return $a['user_id'] - $b['user_id'];
    } else {
        return $a['product_id'] - $b['product_id'];
    }
});

您还可以使用ORDER BY product_id,user_id子句进行数据库排序.

猜你在找的PHP相关文章