diff --git a/appendices/migration54.xml b/appendices/migration54.xml index 5aed56dabf..dc9df9196a 100644 --- a/appendices/migration54.xml +++ b/appendices/migration54.xml @@ -112,6 +112,12 @@ and '5 foobar' are considered non-numeric and produce a E_WARNING, but are converted to 12 and 5 respectively, for backward compatibility reasons. + + Note: Following code returns different result. + + + $str='abc';var_dump(isset($str['x'])); // false for PHP 5.4 or later, but true for 5.3 or less + diff --git a/language/types/array.xml b/language/types/array.xml index 323a2ec491..a4b5d4ef91 100644 --- a/language/types/array.xml +++ b/language/types/array.xml @@ -118,6 +118,61 @@ $array = [ + + + From PHP 5.4, string offset access made consistent. As a result, some return values may be + different from older version. As of PHP 5.4, string offset should be integer or integer like + string, otherwise it will be in a warning. + + + + String offset access example + +=: "b", Older versions: "b" +var_dump(isset($str['1'])); // 5.4.0>=: true, Older versions: ture + +var_dump($str['1.0']); // 5.4.0>=: "b" with E_WARNING, Older versions: "b" +var_dump(isset($str['1.0'])); // 5.4.0>=: false, Older versions: true + +var_dump($str['x']); // 5.4.0>=: "a" with E_WARNING, Older versions: "a" +var_dump(isset($str['x'])); // 5.4.0>=: false, Older versions: true + +var_dump($str['1x']); // 5.4.0>=: "b", Older versions: "b" +var_dump(isset($str['1x'])); // 5.4.0>=: true, Older versions: ture +?> +]]> + + &example.outputs; + + + If multiple elements in the array declaration use the same key, only the last one