Skip to content

Commit 05e88ff

Browse files
committed
Fixed setNestedElement behaviour for empty keys array
1 parent 139ffa4 commit 05e88ff

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/Arr.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,12 @@ public static function setNestedElement(array $array, $keys, $value): array
194194
{
195195
$result = self::clone($array);
196196
$keysArray = self::getKeysArray($keys);
197+
198+
// If no keys specified then preserve array
199+
if (empty($keysArray)) {
200+
return $result;
201+
}
202+
197203
$tmp = &$result;
198204

199205
while (count($keysArray) > 0) {

test/ArrTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ public function testSetNestedElement()
147147

148148
$this->assertSame([[['test']]], Arr::setNestedElement([], '[].[].[]', 'test'));
149149
$this->assertSame([[[[]]]], Arr::setNestedElement([], '[].[].[]', []));
150+
$this->assertSame([[[[]]]], Arr::setNestedElement([], ['[]','[]','[]'], []));
151+
$this->assertSame([], Arr::setNestedElement([], [], 'test'));
152+
$this->assertSame([], Arr::setNestedElement([], [null], 'test'));
150153

151154
// Test alias
152155
$this->assertSame(Arr::setNestedElement([], '[].[].[]', 'test'), Arr::set([], '[].[].[]', 'test'));

0 commit comments

Comments
 (0)