我有以下数组:
$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子句进行数据库排序.