其实,你只需要先把$userJobnumberArray数据的先用一次循环把他改成$userJobnumberArray=[deptid=>jobnumber] 这个格式,然后在执行你的外循环,内循环就不要了,直接判断 isset($userJobnumberArray[deptid]),如果存在就直接取就好了.
下面这个如何???能优化地方,也就是in_array() 这个 时间复杂度为n的操作变成了 数组索引调用这个复杂度为1的调用。
$list = array(
'1' => array('1','6','124'),
'2' => array('2','5','156'),
'4' => array('4','734','221')
);
$userJobnumberArray = array(
array(
'deptid' => '1',
'jobnumber' => 'X1414'
),
array(
'deptid' => '734',
'jobnumber' => '34j6'
),
);
$ujba = [];
foreach($userJobnumberArray as $v){
$ujba[$v['deptid']]=$v['jobnumber'];
}
unset($userJobnumberArray);
$userGruop = [];
foreach ($list as $k => $v) {
foreach($v as $deptid){
if(isset($ujba[$deptid]))
$userGruop[$k][] = $ujba[$deptid];
}
}
print_r($userGruop);