function NestedArray::mergeDeepArray

Same name in other branches
  1. 9 core/lib/Drupal/Component/Utility/NestedArray.php \Drupal\Component\Utility\NestedArray::mergeDeepArray()
  2. 8.9.x core/lib/Drupal/Component/Utility/NestedArray.php \Drupal\Component\Utility\NestedArray::mergeDeepArray()
  3. 11.x core/lib/Drupal/Component/Utility/NestedArray.php \Drupal\Component\Utility\NestedArray::mergeDeepArray()

Merges multiple arrays, recursively, and returns the merged array.

This function is equivalent to NestedArray::mergeDeep(), except the input arrays are passed as a single array parameter rather than a variable parameter list.

The following are equivalent:

The following are also equivalent:

Parameters

array $arrays: An arrays of arrays to merge.

bool $preserve_integer_keys: (optional) If given, integer keys will be preserved and merged instead of appended. Defaults to FALSE.

Return value

array The merged array.

See also

NestedArray::mergeDeep()

27 calls to NestedArray::mergeDeepArray()
AssetResolver::getJsAssets in core/lib/Drupal/Core/Asset/AssetResolver.php
AssetResolver::getJsSettingsAssets in core/lib/Drupal/Core/Asset/AssetResolver.php
Returns the JavaScript settings assets for this response's libraries.
BubbleableMetadata::mergeAttachments in core/lib/Drupal/Core/Render/BubbleableMetadata.php
Merges two attachments arrays (which live under the '#attached' key).
CKEditor5PluginManager::getCKEditor5PluginConfig in core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php
Config::getOriginal in core/lib/Drupal/Core/Config/Config.php
Gets original data from this configuration object.

... See full list

File

core/lib/Drupal/Component/Utility/NestedArray.php, line 327

Class

NestedArray
Provides helpers to perform operations on nested arrays and array keys of variable depth.

Namespace

Drupal\Component\Utility

Code

public static function mergeDeepArray(array $arrays, $preserve_integer_keys = FALSE) {
    $result = [];
    foreach ($arrays as $array) {
        foreach ($array as $key => $value) {
            // Renumber integer keys as array_merge_recursive() does unless
            // $preserve_integer_keys is set to TRUE. Note that PHP automatically
            // converts array keys that are integer strings (e.g., '1') to integers.
            if (is_int($key) && !$preserve_integer_keys) {
                $result[] = $value;
            }
            elseif (isset($result[$key]) && is_array($result[$key]) && is_array($value)) {
                $result[$key] = self::mergeDeepArray([
                    $result[$key],
                    $value,
                ], $preserve_integer_keys);
            }
            else {
                $result[$key] = $value;
            }
        }
    }
    return $result;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.