我有两个关联键值对的数组。我想将它合并为一个,使得它们仍然是键,并且具有" on_time"在第一个数组中应该忽略第二个数组中该键的值。
这是我下面的两个数组
[att] => Array
(
[841] => on_time
[842] => not_time
[843] => not_time
)
[entatt] => Array
(
[841] => unexcused
[842] => unexcused
[843] => late
)
我想要的预期输出是
[entatt] => Array
(
[841] => on_time
[842] => unexcused
[843] => late
)
任何帮助?
答案 0 :(得分:1)
这应该有效:
$result = array();
foreach ($att as $key => $value) {
$result[$key] = $value !== 'on_time' ? $entatt[$key] : 'on_time';
}
答案 1 :(得分:0)
您正在寻找一种方法同时走两个数组,并应用一个函数,以便在发生碰撞时选择正确的条目。我不认为它有内置功能。</ p>
function merge2($att, $entatt, $collision){
$res = $att;
foreach ($entatt as $key => $value) {
if (isset($res[$key]))
$res[$key] = $collision($res[$key],$value);
else
$res[$key] = $value;
}
return $res;
}
然后您应该可以按照以下方式使用它:
merge2($att,$entatt,function($v1,$v2){
return $v1 !== 'on_time' ? $v2 : $v1;
});
当$entatt
或$att
包含不在另一个数组中的键时,它应该正确处理案例(尽管如果有必要,您的问题并不清楚。)