You are here

public static function NestedArray::mergeDeep in Render cache 7.2

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

This function is similar to PHP's array_merge_recursive() function, but it handles non-array values differently. When merging values that are not both arrays, the latter value replaces the former rather than merging with it.

Example:

$link_options_1 = array(
  'fragment' => 'x',
  'attributes' => array(
    'title' => t('X'),
    'class' => array(
      'a',
      'b',
    ),
  ),
);
$link_options_2 = array(
  'fragment' => 'y',
  'attributes' => array(
    'title' => t('Y'),
    'class' => array(
      'c',
      'd',
    ),
  ),
);

// This results in array('fragment' => array('x', 'y'), 'attributes' => array('title' => array(t('X'), t('Y')), 'class' => array('a', 'b', 'c', 'd'))).
$incorrect = array_merge_recursive($link_options_1, $link_options_2);

// This results in array('fragment' => 'y', 'attributes' => array('title' => t('Y'), 'class' => array('a', 'b', 'c', 'd'))).
$correct = NestedArray::mergeDeep($link_options_1, $link_options_2);

Parameters

array ...: Arrays to merge.

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

Return value

array The merged array.

See also

NestedArray::mergeDeepArray()

5 calls to NestedArray::mergeDeep()
RenderCacheBackendAdapter::set in src/Cache/RenderCacheBackendAdapter.php
Sets one cache entry based on the given $cache_info structure.
RenderCachePlaceholderTest::test_getPlaceholder_multi in tests/src/Cache/RenderCachePlaceholderTest.php
@covers ::getPlaceholder()
RenderStack::collectAndRemoveAssets in src/Cache/RenderStack.php
RenderStack::processPostRenderCache in src/Cache/RenderStack.php
RenderStackTest::helperCollectAttached in tests/src/Cache/RenderStackTest.php
Helper function to mock collect attached.

File

tests/lib/Drupal/Component/Utility/NestedArray.php, line 303
Contains Drupal\Component\Utility\NestedArray.

Class

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

Namespace

Drupal\Component\Utility

Code

public static function mergeDeep() {
  return self::mergeDeepArray(func_get_args());
}