/** * Test ac_array_overlay() * * @since 1.0.0 */ public function test_ac_array_overlay() { $a1 = array('apple' => 'banana', 'pear' => 'grape', 'vegetables' => array('cucumber' => 'asparagus')); $a2 = array('strawberry' => 'orange', 'apple' => 'kiwi', 'vegetables' => array('cucumber' => 'peas')); $overlayed = array('apple' => 'kiwi', 'pear' => 'grape', 'vegetables' => array('cucumber' => 'peas')); $this->assertEquals($overlayed, ac_array_overlay($a1, $a2)); }
/** * Merge two arrays. * * @param array $a1 * @param array $a2 * @return array */ function ac_array_overlay($a1, $a2) { foreach ($a1 as $k => $v) { if (!array_key_exists($k, $a2)) { continue; } if (is_array($v) && is_array($a2[$k])) { $a1[$k] = ac_array_overlay($v, $a2[$k]); } else { $a1[$k] = $a2[$k]; } } return $a1; }