Возможна такая возможность:
$array = array(
'bla' => (isset($array2['bla']) ? $array2['bla'] : ''),
'bla2' => (isset($array2['bla2']) ? $array2['bla2'] : ''),
'foo' => (isset($array2['foo']) ? $array2['foo'] : ''),
'xxx' => (isset($array2['yyy']) ? $array2['yyy'] : ''),
'bar' => (isset($array2['bar']) ? $array2['bar'] : '')
);
Если это произойдет более динамично, я бы предложил t, чтобы использовать array_intersect_key, например, опубликованный soulmerge. Но этот подход имел бы компромисс, который можно использовать только массивы с теми же ключами.
Поскольку ваши ключи в 2 массивах могут отличаться, вы можете создать что-то полудинамическое с помощью массива отображения, чтобы отображать ключи между массивами. У вас есть хотя бы список ключей, которые различаются в ваших массивах.
//key = key in $a, value = key in $b
$map = array(
'fooBar' => 'bar'
);
$a = array(
'fooBar' => 0,
'bla' => 0,
'xyz' => 0
);
$b = array(
'bla' => 123,
'bar' => 321,
'xyz' => 'somevalue'
);
foreach($a as $k => $v) {
if(isset($map[$k]) && isset($b[$map[$k]])) {
$a[$k] = $b[$map[$k]];
} elseif(isset($b[$k])){
$a[$k] = $b[$k];
}
}
Таким образом, вы должны определять только разные ключи в $ map.
Что произойдет, если индекс не существует в '$ array2'? –
Затем либо значение равно null, либо индекс в массиве $ не должен существовать. – LuRsT