2011-12-09 11 views
0

array_merge_recursiveを試しましたが、期待どおりに動作しません。ここでは例です:PHPで多次元配列をマージし、古い値を新しい値に置き換えるにはどうすればよいですか?

$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

あなたはちょうどそれは、あなたはループのためにそれを自分で行うことができます上書きする場合、これはあなたが望むものではない場合...あなたは、多次元の例を提供することができますか?

$result = array(); 
foreach($arrays as $currentarray) { 
    foreach($currentarray as $property => $value) 
     $result[$property] = $value; 
} 
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 
//) 
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 > 

ジョナサンの答えは良いです:)

関連する問題