(PHP 5 >= 5.3.0, PHP 7, PHP 8)
array_replace_recursive — Replaces elements from passed arrays into the first array recursively
Descriptionarray_replace_recursive() is recursive : it will recurse into arrays and apply the same process to the inner value.
When the value in the first array is scalar, it will be replaced by the value in the second array, may it be scalar or array. When the value in the first array and the second array are both arrays, array_replace_recursive() will replace their respective value recursively.
Parametersarray
The array in which elements are replaced.
replacements
Arrays from which elements will be extracted.
Returns an array.
ExamplesExample #1 array_replace_recursive() example
<?php
$base = array('citrus' => array("orange"), 'berries' => array("blackberry", "raspberry"));
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));$basket = array_replace_recursive($base, $replacements);
print_r($basket);$basket = array_replace($base, $replacements);
print_r($basket);
?>
The above example will output:
Array ( [citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry [1] => raspberry ) ) Array ( [citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry ) )
Example #2 array_replace_recursive() and recursive behavior
<?php
$base = array('citrus' => array("orange") , 'berries' => array("blackberry", "raspberry"), 'others' => 'banana' );
$replacements = array('citrus' => 'pineapple', 'berries' => array('blueberry'), 'others' => array('litchis'));
$replacements2 = array('citrus' => array('pineapple'), 'berries' => array('blueberry'), 'others' => 'litchis');$basket = array_replace_recursive($base, $replacements, $replacements2);
print_r($basket);?>
The above example will output:
Array ( [citrus] => Array ( [0] => pineapple ) [berries] => Array ( [0] => blueberry [1] => raspberry ) [others] => litchis )Pau Prat Torrella ¶
5 years ago
Note that function will NOT replace a sub-tree from you $array1 if its value in $array2 is an empty array.
Even tho the key for this dimension is technically 'set'.
(I suppose it treats it as just another recursive level to dive in, finding no key to compare, backtracking while leaving this sub-tree alone)
For example:
$array1 = ['first' => ['second' => 'hello']];
$array2 = ['first' => []];
$result = array_replace_recursive($array1, $array2);
$result is still: ['first' => ['second' => 'hello']].
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4