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

Error Messages