Skip to content

Commit 3ae99ee

Browse files
authored
Improve performance of Arr::dot method (#55495)
1 parent cea87be commit 3ae99ee

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/Illuminate/Collections/Arr.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,19 @@ public static function dot($array, $prepend = '')
112112
{
113113
$results = [];
114114

115-
foreach ($array as $key => $value) {
116-
if (is_array($value) && ! empty($value)) {
117-
$results = array_merge($results, static::dot($value, $prepend.$key.'.'));
118-
} else {
119-
$results[$prepend.$key] = $value;
115+
$flatten = function ($data, $prefix) use (&$results, &$flatten): void {
116+
foreach ($data as $key => $value) {
117+
$newKey = $prefix.$key;
118+
119+
if (is_array($value) && ! empty($value)) {
120+
$flatten($value, $newKey.'.');
121+
} else {
122+
$results[$newKey] = $value;
123+
}
120124
}
121-
}
125+
};
126+
127+
$flatten($array, $prepend);
122128

123129
return $results;
124130
}

0 commit comments

Comments
 (0)