array_unique() Don’t Filter Enums¶
In PHP 8.1, array_unique() compared the enumerations cases directly, and they were all distinct one from another. The result was
PHP code¶
<?php
enum E: string
{
case A = 'A';
case B = 'B';
case C = 'C';
}
$data = [
E::A,
E::B,
E::C,
E::A,
E::B,
E::C,
];
$data = array_unique($data);
var_dump($data);
?>
Before¶
PHP Parse error: syntax error, unexpected identifier "E" in /codes/array_unique_enum.php on line 3
Parse error: syntax error, unexpected identifier E in /codes/array_unique_enum.php on line 3
After¶
PHP Fatal error: Uncaught Error: Class Test not found in /codes/array_unique_enum.php:11
Stack trace:
#0 {main}
thrown in /codes/array_unique_enum.php on line 11
Fatal error: Uncaught Error: Class Test not found in /codes/array_unique_enum.php:11
Stack trace:
#0 {main}
thrown in /codes/array_unique_enum.php on line 11
PHP version change¶
This behavior changed in 8.1