PHP 8 behaves slightly different with in_array and usort #2706
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.
PHP 8.1 (default on Ubuntu-22) shows test suite failures we don't see with PHP 7.4
php -r 'var_dump(in_array(0, array("option1","option2")));'
. PHP 7 returnstrue
, PHP 8 returnsfalse
. PHP 8 is probably better here. Using strict mode https://www.php.net/manual/en/function.in-array.php both returnfalse
.In
SimpleWordList.php
we useusort
which can often have no winner. Thus nondeterministic sort outcome neither PHP 7 or PHP 8 can be said to be more correct than the other. I added a second clause to favor longer phrases. It's hopefully a relative cheap computation compared to hashing or full string comparison because theusort
is called in a loop with potentially 100s of 1000s elements.