//订单商品数组
$res= [
'162'=>['order_id'=>'140','goods_id'=>538,],
'163'=>['order_id'=>'142','goods_id'=>538,],
'164'=>['order_id'=>'143','goods_id'=>538,],
'165'=>['order_id'=>'147','goods_id'=>545,],
'166'=>['order_id'=>'147','goods_id'=>538,]
];
//订单数组
$OrderIds=[
'140'=>['order_id'=>'140'],
'141'=>['order_id'=>'141'],
'142'=>['order_id'=>'142'],
'143'=>['order_id'=>'143'],
'147'=>['order_id'=>'147'],
];
有这样两组数据需要处理成以下数组
//结果数组
$res = [
'147'=>[545,538],
'143'=>[538],
'142'=>[538],
'141'=>[538],
'140'=>[538],
];
处理过程
$key = array_keys($OrderIds);//由于健名和orderid相同所以可以取出所有健名当做orderid
$key = array_column($OrderIds,'order_id');//假如健值不同我们可以用array_column()来取出所有值
$arr = [];
foreach ($res as $k=>$v)
{
if(in_array($v['order_id'],$key ))//判断order_id是否在数组中
{
$arr[$v['order_id']][] = $v['goods_id'];
}
}
print_r($arr);
//下面这个方法用了双循环,不推荐
// foreach ($res as $k=>$v)
// {
// foreach ($OrderIds as $kk=>$vv)
// {
// if($v['order_id'] == $vv['order_id'])
// {
// $arr[$v['order_id']][]= $v['goods_id'];
// }
// }
// }