Fix GH-9296: incorrect ksort(..., SORT_REGULAR)
behaviour on arrays with numeric and string keys
#9293
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 comparator function used at
ksort
orkrsort
inSORT_REGULAR
mode need to be consistent with basic comparison rules.These rules were changed in PHP-8.0 for numeric strings, but comparator used at
ksort
mistakenly kept the old behaviour.It leads to inconsistent situations, when after
ksort
the first key is GREATER than some of the next ones by according to the basic comparison operators.Simple example:
In php7.4 we get:
That's OK, because it's consistent with php7.4 comparison rules.
In php8.0 the output is:
Which is not OK, because it is not consistent with new php8.0 comparison rules.
After this fix the output is:
Which is consistent with php8.0 comparison rules.
See #9296