/** * Array merge recursive * @param array $arr1 * @param array $arr2 * @return array */ function recursive_merge($arr1, $arr2) { if (!is_array($arr1) || !is_array($arr2)) { return $arr2; } foreach ($arr2 as $key => $val2) { $val1 = isset($arr1[$key]) ? $arr1[$key] : []; $arr1[$key] = recursive_merge($val1, $val2); } return $arr1; }
public function prepare($data) { $item = new \stdClass(); $data = recursive_merge(['href' => null, 'text' => null, 'children' => []], $data); foreach ($data as $key => $value) { if ($key == 'children' && $value) { foreach ($value as $index => $child) { $value[$index] = $this->prepare($child); } } $item->{$key} = $value; } return $item; }
public function applyAttributeDefaults(array $values) { return recursive_merge(['type' => Attribute::VARCHAR, 'default' => null, 'nullable' => true, 'unique' => false, 'validate' => null, 'parent' => false, 'handler' => 'Lavender\\Database\\Attribute', 'label' => null, 'length' => null, 'unsigned' => true, 'comment' => null], $values); }
public function applyRelationshipDefaults(array $values) { return recursive_merge(['entity' => null, 'type' => null, 'table' => null, 'column' => null], $values); }
function unittest_recursive_merge() { $array1 = array('properties' => array('a' => 1, 'b' => 2), 'list' => array('a', 'b')); $array2 = array('properties' => array('b' => 3, 'c' => 4), 'list' => array('c', 'd')); $merged = recursive_merge($array1, $array2); assertTrue(count($merged) === 2); assertTrue(count($merged['properties']) === 3); assertTrue(count($merged['list']) === 4); }
/** * Merge the given configuration with the existing configuration. * * @param string $path * @param string $key * @return void */ protected function mergeConfigFrom($path, $key) { $config = $this->app['config']->get($key, []); $this->app['config']->set($key, recursive_merge(require $path, $config)); }