X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FUtils%2FArray.php;h=a9d6cdd07ef50c53c1d8393adf9aa1a772b23222;hb=07f36380385fd50f98f69fb08db3f9188fb77667;hp=f4938febf89bfe95ae21931c55d724e10b18a98b;hpb=bf9ba887d17fc752e1f228a6f566bef579f467d9;p=civicrm-core.git diff --git a/CRM/Utils/Array.php b/CRM/Utils/Array.php index f4938febf8..a9d6cdd07e 100644 --- a/CRM/Utils/Array.php +++ b/CRM/Utils/Array.php @@ -1205,12 +1205,24 @@ class CRM_Utils_Array { * * @param $path * @param $value + * @param array $source * * @return array */ - public static function recursiveBuild($path, $value) { + public static function recursiveBuild($path, $value, $source = []) { $arrayKey = array_shift($path); - return [$arrayKey => (empty($path) ? $value : self::recursiveBuild($path, $value))]; + // Recurse through array keys + if ($path) { + if (!isset($source[$arrayKey])) { + $source[$arrayKey] = []; + } + $source[$arrayKey] = self::recursiveBuild($path, $value, $source[$arrayKey]); + } + // Final iteration + else { + $source[$arrayKey] = $value; + } + return $source; } }