* Merges any number of arrays / parameters recursively, using the left array as base, giving priority to the right array. Replacing entries with string keys with values from latter arrays.
18
*
19
* @param array[] $arrays
20
* @return array
21
*/
22
function array_merge_recursive_distinct(...$arrays)
23
{
24
if (count($arrays) < 2) {
25
if ($arrays === []) {
26
return [];
27
} else {
28
return $arrays[0];
29
}
30
}
31
32
$merged = array_shift($arrays);
33
34
foreach ($arrays as $array) {
35
foreach ($array as $key => $value) {
36
if (is_array($value) && (isset($merged[$key]) && is_array($merged[$key]))) {