in_array() Doesn’t Confuse 0 And Empty String
in_array() makes a relaxed comparison of values in its arguments. When there are 0 and empty strings, those used to be considered identical in PHP 7 and they are now distinct in PHP 8.
This behavior change doesn’t impact calls to in_array() with the third argument strict_comparison. That feature is unchanged in PHP 8.
PHP code
<?php
var_dump(in_array('', [ 0]));
?>
Before
bool(true)
After
bool(false)
PHP version change
This behavior changed in 8.0.