Merge pull request #8425 from grimpirate/grimpirate-patch-1

fix: [Validation] DotArrayFilter returns incorrect array when numeric index array is passed
This commit is contained in:
kenjis 2024-01-18 09:36:13 +09:00 committed by GitHub
commit 0788018f2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 1 deletions

View File

@ -44,7 +44,7 @@ final class DotArrayFilter
$segments
);
$result = array_merge_recursive($result, self::filter($segments, $array));
$result = array_replace_recursive($result, self::filter($segments, $array));
}
return $result;

View File

@ -180,4 +180,19 @@ final class DotArrayFilterTest extends CIUnitTestCase
];
$this->assertSame($expected, $result);
}
public function testRunReturnOrderedIndices()
{
$data = [
'foo' => [
2 => 'bar',
0 => 'baz',
1 => 'biz',
],
];
$result = DotArrayFilter::run(['foo.2', 'foo.0', 'foo.1'], $data);
$this->assertSame($data, $result);
}
}