(dev/core#178) Redis - Report error messages
[civicrm-core.git] / CRM / Utils / Array.php
index f4938febf89bfe95ae21931c55d724e10b18a98b..a9d6cdd07ef50c53c1d8393adf9aa1a772b23222 100644 (file)
@@ -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;
   }
 
 }