-1

I've got this method which merges two arrays, like this :

<?php
$array1 = [
    'huey' => 0,
    'dewey' => 1,
    'louie' => 2
];

$array2 = [
    'dewey' => 3,
    'beagle boys' => '  167-671'
];

$array3 = array_merge($array1, $array2);

var_dump($array3);

The problem is, even if the key "dewey" is updated, I don't want my array to have the "beagle boys" key. How can I update my code to output only keys which are on the first array ?

Marc Brillault
  • 1,902
  • 4
  • 21
  • 41

2 Answers2

3
$array3 = array_merge(
    $array1,
    array_intersect_key($array2, $array1)
);
u_mulder
  • 54,101
  • 5
  • 48
  • 64
0

Copy only data from array2 which exists in array1

$array1 = [
    'huey' => 0,
    'dewey' => 1,
    'louie' => 2
];

$array2 = [
    'dewey' => 3,
    'beagle boys' => '  167-671'
];

$array3 = $array1;

foreach ($array1 as $key => $values){
  if (isset($array2[$key])) {
    $array3[$key] = $array2[$key];
  }
}

print_r($array3);
nospor
  • 4,190
  • 1
  • 16
  • 25