[12.x] Fix Arr::dot() to convert empty arrays to null #57369
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Arr::dot()
to properly flatten empty arrays by converting them tonull
Problem
The
Arr::dot()
method is documented to "flatten a multi-dimensional associative array with dots," but it was not handling empty arrays correctly. When an empty array was encountered, it was left as-is in the output, resulting in a partially flattened array that still contained nested structures.Example of the problem:
This caused issues when using the result with functions like
array_diff()
that require single-dimensional arrays.Solution
Modified the
dot()
method inArr.php
to check if a value is an empty array and convert it tonull
instead of storing it directly. This ensures complete flattening.Changes made:
src/Illuminate/Collections/Arr.php:179