On 25.01.2017 at 14:21, Giovanni Giacobbi wrote:

> Greetings,
> 
> There is something weird with 7.1 and implicit strings to array
> conversions, so I wanted to double check with you that the behaviour is
> wanted (and perhaps the migration71 doc should be updated to reflect this.
> 
> So in the migration docs [1] you say that: " Applying the empty index
> operator to a string (e.g. $str[] = $x) throws a fatal error instead of
> converting silently to array. "
> 
> I'm going to show four cases on different PHP versions:
> 
> CASE 1: php -r '$a = "foo"; $a[] = "bar"; var_dump($a);'
> PHP 5.6.x -> Fatal Error
> PHP 7.0.x -> Fatal Error
> PHP 7.1.x -> Fatal Error
> 
> CASE 2: php -r '$a = "foo"; $a["x"] = "baz"; var_dump($a);'
> PHP 5.6.x -> string "boo" (with illegal offset warning)
> PHP 7.0.x -> string "boo" (with illegal offset warning)
> PHP 7.1.x -> string "boo" (with illegal offset warning)
> 
> CASE 3: php -r '$a = ""; $a["x"] = "bar"; var_dump($a);'
> PHP 5.6.x -> array("x" => "bar") with NO warnings
> PHP 7.0.x -> array("x" => "bar") with NO warnings
> PHP 7.1.x -> string "b" with illegal offset warning
> 
> CASE 4: php -r '$a = ""; $a[] = "bar"; var_dump($a);'
> PHP 5.6.x -> array("bar") with NO warnings
> PHP 7.0.x -> array("bar") with NO warnings
> PHP 7.1.x -> Fatal Error
> 
> I think what is bugging me here is that the docs talk about CASE 1 whose
> behaviour actually did not change, so it should mention "empty string"
> because that's where the actual change happened (CASE 4), also I think that
> CASE 3 should be rethinked.
> 
> In general I would like to raise a concern on the fact that I think the
> previous behaviour was better, after all PHP is dynamically typed so why
> not allow a variable to silently change its value silently? We know that
> using offset with strings is always illegal (CASE 2) so why not *always*
> converting it to an array and discard its previous value?
> 
> [1]
> http://php.net/manual/en/migration71.incompatible.php#migration71.incompatible.empty-string-index-operator

See <https://bugs.php.net/bug.php?id=73925>.

-- 
Christoph M. Becker


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to