fork download
  1. <?php
  2.  
  3. $array1 = <<<EOT
  4. {
  5.   "zone1":{
  6.   "foo1":"bar1",
  7.   "foo2":"bar2",
  8.   "foo3":"bar3",
  9.   "foo4":"bar4"
  10.   },
  11.   "zone2":{
  12.   "newfoo1":"newbar1",
  13.   "newfoo2":"newbar2",
  14.   "newfoo3":"newbar3",
  15.   "newfoo4":"newbar4"
  16.   },
  17.   "zone3":{
  18.   "morefoo1":"morebar1",
  19.   "morefoo2":"morebar2",
  20.   "morefoo3":"morebar3",
  21.   "morefoo4":"morebar4"
  22.   }
  23. }
  24. EOT;
  25.  
  26. $array2 = <<<EOT
  27. {
  28.   "zone1":{
  29.   "foo1":"updatedbar1"
  30.   },
  31.   "zone3":{
  32.   "morefoo2":"updatedbar2",
  33.   "morefoo4":"updatedbar4"
  34.   }
  35. }
  36. EOT;
  37.  
  38. $array1 = json_decode($array1, true);
  39. $array2 = json_decode($array2, true);
  40.  
  41. $array3 = array_replace_recursive($array1, $array2);
  42. print_r($array3);
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Array
(
    [zone1] => Array
        (
            [foo1] => updatedbar1
            [foo2] => bar2
            [foo3] => bar3
            [foo4] => bar4
        )

    [zone2] => Array
        (
            [newfoo1] => newbar1
            [newfoo2] => newbar2
            [newfoo3] => newbar3
            [newfoo4] => newbar4
        )

    [zone3] => Array
        (
            [morefoo1] => morebar1
            [morefoo2] => updatedbar2
            [morefoo3] => morebar3
            [morefoo4] => updatedbar4
        )

)