Fix JsonPointer::remove()
not handling sequential arrays correctly
#67
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.
The
JsonPointer::remove()
method doesn't correctly detect sequential vs associative arrays when theTOLERATE_ASSOCIATIVE_ARRAYS
is enabled. This causes most sequential arrays to be converted to associative arrays.The issue is due to the
$i
counter not being incremented in theforeach
loop that detects whether an array is sequential or associative.While the counter can be incremented in the
if
statement, like in #65, I've decided to do it in the body of theforeach
loop as I believe it to be less "clever" and easier to read. I have also added a test to prove the issue and defend against it in the future.