Skip to content

Instantly share code, notes, and snippets.

@datayja
Last active October 11, 2015 03:07
Show Gist options
  • Save datayja/3792991 to your computer and use it in GitHub Desktop.
Save datayja/3792991 to your computer and use it in GitHub Desktop.
Array merge, derivation style
<?php
function array_merge_derivation (array $base, array $derived)
{
$merged = [];
foreach ($base as $base_key => $base_value) {
$merged[$base_key] = $base_value;
if (isset($derived[$base_key])) {
if (\is_array($base_value)) {
$merged[$base_key] = array_merge_derivation($base[$base_key], $derived[$base_key]);
} else {
$merged[$base_key] = $derived[$base_key];
}
}
}
foreach ($derived as $derived_key => $derived_value) {
if (!isset($merged[$derived_key])) {
$merged[$derived_key] = $derived_value;
}
}
return $merged;
}
@datayja
Copy link
Author

datayja commented Sep 27, 2012

Use this method to merge two arrays in the following way: base array for default values, derived array for overrides.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment