現有密鑰一種可能性是:
$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中會發生什麼? – 2009-10-23 09:12:56
然後,將該值設置爲null,或$ array中的索引不應存在。 – LuRsT 2009-10-23 09:16:35