From 3e98008af4546af4e5c5df6bc4a62acbabe18a0f Mon Sep 17 00:00:00 2001 From: Yasuo Ohgaki Date: Sat, 31 Mar 2012 09:22:45 +0000 Subject: [PATCH] Improve array doc for string offset access. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@324661 c90b9560-bf6c-de11-be94-00142212c4b1 --- appendices/migration54.xml | 6 +++++ language/types/array.xml | 55 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) 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