0

I have two arrays. First, lets call it array1:

array (size=8)
  0 => 
    array (size=6)
      'id' => string '2' (length=1)
      'domacin' => string 'Man City' (length=8)
      'gost' => string 'Liverpool' (length=9)
      'tip' => string '1' (length=1)
      'kvota' => string '1.8' (length=3)
      'status' => string 'Aktivan' (length=7)
  1 => 
    array (size=6)
      'id' => string '4' (length=1)
      'domacin' => string 'Inter' (length=5)
      'gost' => string 'Milan' (length=5)
      'tip' => string '1' (length=1)
      'kvota' => string '2.5' (length=3)
      'status' => string 'Aktivan' (length=7)

And second, array2:

  'id' => string '2' (length=1)
  'domacin' => string 'Man City' (length=8)
  'gost' => string 'Liverpool' (length=9)
  'tip' => string '1' (length=1)
  'kvota' => string '1.8' (length=3)
  'status' => string 'Gubitan' (length=7)

I want to merge this two arrays but to use values from second where id from first is equal with id from second.

Expected result would be:

array (size=8)
  0 => 
    array (size=6)
      'id' => string '2' (length=1)
      'domacin' => string 'Man City' (length=8)
      'gost' => string 'Liverpool' (length=9)
      'tip' => string '1' (length=1)
      'kvota' => string '1.8' (length=3)
      'status' => string 'Gubitan' (length=7)
  1 => 
    array (size=6)
      'id' => string '4' (length=1)
      'domacin' => string 'Inter' (length=5)
      'gost' => string 'Milan' (length=5)
      'tip' => string '1' (length=1)
      'kvota' => string '2.5' (length=3)
      'status' => string 'Aktivan' (length=7)

Check the status where index is 0. It changed from 'Aktivan'(from array1) to 'Gubitan' like we had in array2.

How to do that?

dnkklada
  • 11
  • 1
  • 9

2 Answers2

1
foreach ($firstArr as &$item) {
    if ($item['id'] == $secondArr['id']) {
        $item = $secondArr;
    }
}
Michael D.
  • 264
  • 2
  • 5
0

You can do this easily using two foreach loops :

foreach( $array1 as $key1=>$element1 ){
    foreach( $array2 as $element2 ){
        if ($element1['id'] == $element2['id'])
            {
              $array1[$key1]['status'] = $element2['status'];
            }
    }
}
Theox
  • 1,363
  • 9
  • 20
  • When I use var_dump($array1); i got this: array (size=2) 0 => array (size=6) 'id' => string '2' (length=1) ... 'status' => string '2' (length=1) 1 => array (size=6) 'id' => string '4' (length=1) ... 'status' => string 'Aktivan' (length=7) array (size=1) 0 => array (size=6) 'id' => string '2' (length=1) ... 'status' => string '2' (length=1) So status get id value. – dnkklada Jan 03 '14 at 14:05