ID: 44559 User updated by: kurt at surfmerchants dot com Reported By: kurt at surfmerchants dot com Status: Bogus Bug Type: Arrays related Operating System: Linux PHP Version: 5.2.5 New Comment:
Yeah, I see that now in the docs, thanks. However, just because it's in the docs doesn't make it "right" -- this behavior is *very* confusing when it happens. I wonder if any other language does this; it basically means that you can't count on the contents of any array being correct when you iterate over it, unless you created that array yourself are the only one that has accessed it. Previous Comments: ------------------------------------------------------------------------ [2008-03-29 19:48:13] [EMAIL PROTECTED] 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 Says the documentation: "Note: If you assign, pass or return an undefined variable by reference, it will get created." http://docs.php.net/manual/en/language.references.whatdo.php ------------------------------------------------------------------------ [2008-03-28 14:05:42] kurt at surfmerchants dot com Description: ------------ When returning an array element from a function by reference, if the element key does not exist, the element key is added. Reproduce code: --------------- class simple { var $items = array(); function &getItem($name) { return $this->items[$name]; } } $obj = new simple(); print "Keys before getting item:\n".print_r(array_keys($obj->items), TRUE)."\n"; $retrieved =& $obj->getItem('SHOULD_NOT_EXIST'); print "Retrieved: \n"; var_dump($retrieved); print "Keys after getting item:\n".print_r(array_keys($obj->items), TRUE)."\n"; Expected result: ---------------- Keys before getting item: Array ( ) Retrieved: NULL Keys after getting item: Array ( ) Actual result: -------------- Keys before getting item: Array ( ) Retrieved: NULL Keys after getting item: Array ( [0] => SHOULD_NOT_EXIST ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=44559&edit=1
