Wer*_*eta 7 php sorting multidimensional-array
我有以下数组:
$arr = [
[
'user_id' => 1,
'product_id' => 1
],
[
'user_id' => 1,
'product_id' => 2
],
[
'user_id' => 1,
'product_id' => 3
],
[
'user_id' => 2,
'product_id' => 1
],
[
'user_id' => 2,
'product_id' => 2
],
[
'user_id' => 3,
'product_id' => 1
]
];
Run Code Online (Sandbox Code Playgroud)
我想对它进行排序,看起来像这样:
$arr = [
[
'user_id' => 1,
'product_id' => 1
],
[
'user_id' => 2,
'product_id' => 1
],
[
'user_id' => 3,
'product_id' => 1
],
[
'user_id' => 1,
'product_id' => 2
],
[
'user_id' => 2,
'product_id' => 2
],
[
'user_id' => 1,
'product_id' => 3
]
];
Run Code Online (Sandbox Code Playgroud)
所以基本上我需要订购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;
}
});
Run Code Online (Sandbox Code Playgroud)
我也试过,array_multisort但我能做到的就是使用我已从数据库中检索的相同订单进行订购.
假设你的值是整数:
usort($campaigns, function($a, $b){
if($a['product_id'] == $b['product_id']){
return $a['user_id'] - $b['user_id'];
} else {
return $a['product_id'] - $b['product_id'];
}
});
Run Code Online (Sandbox Code Playgroud)
您还可以使用带有ORDER BY product_id, user_id子句的数据库排序。
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |