According to PHP documentation list() construct doesn't work with strings. However in some cases it works.
$ php -r 'list($a,$b) = "aa";var_dump($a,$b);' NULL NULL $ php -r '$a[0]="ab"; list($a,$b) = $a[0]; var_dump($a,$b);' string(1) "a" string(1) "b"
This behavior caused by implementation feature and wasn't made on purpose.
Make list() behave with strings in consistent way. There are two options:
This will disable undocumented feature and it may break some existing PHP code.
This will make the following code work.
list($a,$b) = "str";
Instead of assignment NULL into $a and $b, it'll assign 's' and 't' characters. However, it also may break some existing PHP code.
Both options may affect existing PHP code.
PHP7
This project requires a 2/3 majority, between first and second or third options.
Voting started on 2014-09-25 and ends 2014-10-02.
Support for strings has been removed for all cases. Support for ArrayAccess
has been added for all cases (previously it was not supported for temporary variables).
https://github.com/php/php-src/commit/7c7b9184b1fdf7add1715079f22241bc1185fcb0