* 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.
7
*
8
* @param array[] $arrays
9
* @return array
10
*/
11
function array_merge_recursive_distinct(...$arrays)
12
{
13
if (count($arrays) < 2) {
14
return empty($arrays) ? [] : $arrays[0];
15
}
16
17
$merged = array_shift($arrays);
18
19
foreach ($arrays as $array) {
20
foreach ($array as $key => $value) {
21
if (is_array($value) && (isset($merged[$key]) && is_array($merged[$key]))) {