#48121 [Bgs]: Reference inconsistency
| From: | feldkamp at gameforge dot de | Date: | Thu, 30 Apr 2009 15:38:53 +0000 |
| Subject: | #48121 [Bgs]: Reference inconsistency | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-136581@lists.php.net to get a copy of this message | ||
ID: 48121
User updated by: feldkamp at gameforge dot de
Reported By: feldkamp at gameforge dot de
Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Debian Etch 2.6.26
PHP Version: 5.2.9
New Comment:
In the example you bring up, the variables $a and $foo are not set
(null) => behaviour is as expected and as documented.
BUT: If you have the variable initialized (for example with false or an
empty string) your behaviour also come up (which it shouldn't in my
humble opinion)
if you use (boolean) true or a non-empty string, you get:
"Warning: Cannot use a scalar value as an array"
if you use (boolean) false or an empty string, you get:
boolean false
array
'unsetKey' => null
Previous Comments:
------------------------------------------------------------------------
[2009-04-30 15:16:42] jani@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
$a =& $foo[];
Where =& means that both $a and $foo[<next index>] should point to
same place, and in your example they both point to null so:
var_dump($a, $foo);
Outputs:
NULL
array(1) {
[0]=>
&NULL
}
For more info:
http://www.php.net/manual/en/language.references.whatare.php
------------------------------------------------------------------------
[2009-04-30 13:51:57] feldkamp at gameforge dot de
Description:
------------
Using array-operator to access a non-existing key of a referenced
variable turns variables that are false or an empty string into arrays.
Reproduce code:
---------------
<?
$abc = false; // or ''
var_dump($abc);
$a = &$abc['unsetKey'];
var_dump($abc);
?>
Expected result:
----------------
Warning: Cannot use a scalar value as an array
Actual result:
--------------
boolean false
array
'unsetKey' => null
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48121&edit=1