Destructuring Non Arrays¶
Destructuring non array values emits a warning in PHP 8.5. This applies to integers, floats, strings and booleans. objects emits a Fatal Error, as before. null values are not emitting any warning.
PHP code¶
<?php
[$a, $b] = 'abc';
[$a, $b] = 123;
[$a, $b] = true;
[$a, $b] = (object) [1,2];
[$a, $b] = null; // OK
var_dump($a);
?>
Before¶
PHP Fatal error: Uncaught Error: Cannot use object of type stdClass as array
Fatal error: Uncaught Error: Cannot use object of type stdClass as array
After¶
PHP Warning: Cannot use string as array
Warning: Cannot use string as array
PHP Warning: Cannot use string as array
Warning: Cannot use string as array
PHP Warning: Cannot use int as array
Warning: Cannot use int as array
PHP Warning: Cannot use int as array
Warning: Cannot use int as array
PHP Warning: Cannot use bool as array
Warning: Cannot use bool as array
PHP Warning: Cannot use bool as array
Warning: Cannot use bool as array
PHP Fatal error: Uncaught Error: Cannot use object of type stdClass as array
Fatal error: Uncaught Error: Cannot use object of type stdClass as array
PHP version change¶
This behavior changed in 8.5