我尝试了array_merge_recursive,但它没有按预期工作。这是一个例子:
$array1=array(
'name'=>'Bob',
'age'=>30
);
$array2=array(
'name'=>'John',
);
$array3=array_merge_recursive($array1,$array2);
// Expected result
$array3=array(
'name'=>'John',
'age'=>30
);
// Actual result
$array3=array(
'name'=>array(
0=>'Bob',
1=>'John'
),
'age'=>30
);
答案 0 :(得分:3)
答案 1 :(得分:0)
如果您只是想要覆盖它,那么您可以使用for循环自己完成...如果这不是您想要的,您能提供一个多维示例吗?
$result = array();
foreach($arrays as $currentarray) {
foreach($currentarray as $property => $value)
$result[$property] = $value;
}
答案 2 :(得分:0)
这将是神奇的! :)
<?php
function array_extend($a1, $a2) {
foreach ($a2 as $key => $val) {
if (isset($a1[$key])) {
if (is_array($a1[$key]) && is_array($val)) {
$a1[$key] = array_extend($a1[$key], $val);
}
else if (is_array($a1[$key])) {
$a1[$key][] = $val;
}
else {
$a1[$key] = $val;
}
}
else {
$a1[$key] = $val;
}
}
return $a1;
}
$array1=array(
'name'=>'Bob',
'age'=>30
);
$array2=array(
'name'=>'John'
);
$array3 = array_extend($array1, $array2);
print_r($array3);
// Array
// (
// [name] => John
// [age] => 30
//)
答案 3 :(得分:0)
php > $array1_keys = array_keys($array1); $array2_keys = array_keys($array2);
php > $array1 = array('name' => 'bob', 'age' => 30); $array2 = array('name' => 'john');
php > $array1_keys = array_keys($array1); $array2_keys = array_keys($array2);
php > foreach ($array1_keys as $key) {
php { foreach ($array2_keys as $key2) {
php { if ($key == $key2) {
php { $array1[$key] = $array2[$key2];
php { }
php { }
php { }
php > var_dump($array1);
array(2) {
["name"]=>
string(4) "john"
["age"]=>
int(30)
}
php >
乔纳森的答案更好:)