php - 如果两个数组中的特定键值匹配,则插入新键
问题描述
$array1 = array(
[0] => array(
'id' => 'gdye6378399sjwui39',
'name' => 'Plate 1'
),
[1] => array(
'id' => 'xyz6378399sjwui39',
'name' => 'Plate 2'
),
[2] => array(
'id' => 'tr2e6378399sjwui39',
'name' => 'Plate 3'
)
)
和另一个数组
$array2 = array(
[0] => array(
'id' => 'gdye6378399sjwui39',
'ETA' => '8'
),
[1] => array(
'id' => 'tr2e6378399sjwui39',
'ETA' => '9'
)
[2] => array(
'id' => 'xyz6378399sjwui39',
'ETA' => '5'
)
)
我想比较这两个数组。我这样做是这样的: -
if(!empty($array2))
{
foreach($array1 as $ck => $cl)
{
foreach($array12 as $ued){
if($cl['id'] == $ued['id'])
{
$array1[$ck]['ETA'] = $ued['ETA'];
break;
}
}
}
还有什么其他更好的方法可以做到这一点?两个数组的顺序可能不同,大小也可能不同。
解决方案
如果您按 id 索引第二个数组(使用array_column()
),您可以不使用内部而逃脱foreach()
,只需使用isset()
...
$match = array_column($array2, null, 'id');
foreach ( $array1 as $ck=>$cl) {
if ( isset($match[$cl['id']]) ) {
$array1[$ck]['ETA'] = $match[$cl['id']]['ETA'];
}
}
print_r($array1);
推荐阅读
- java - 如何在 Java 中正确处理 HTTP POST
- php - 我无法在事件列表中正确输出总计
- apache-spark - 如何修复“使用 spark 创建 hive orc 表时权限被拒绝”?
- python - 如何识别元组列表中的部分元组匹配
- python - 打印整数的一部分
- litho - 当另一个组件执行操作时如何设置组件可见真或假
- jquery - 当输入为空或使用 jquery 的电子邮件格式无效时显示红色边框
- python - 无法从字典中引用使用“vars()[]”创建的变量
- vb.net - 清除先前使用数据源填充的组合框
- c# - 如何从 DateTime 中获取天、小时、分钟、秒作为小数?