|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2010-11-09 13:09 UTC] php dot net at site dot lanzz dot org
[2010-11-09 13:19 UTC] cataphract@php.net
-Status: Open
+Status: Wont fix
[2010-11-09 13:19 UTC] cataphract@php.net
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Dec 14 08:00:01 2025 UTC |
Description: ------------ When assigning a reference to a previously undefined property of an ArrayObject, E_NOTICE is thrown on the assignment itself, and every time that property is accessed after that. Despite the "undefined index" complaints, the code works as expected — $b->test[] = "foo" successfully assigns "foo" to $a[0]. This issue does not occur with assignment by value — no notices are displayed (though the code no longer works as intended, as $a[0] remains undefined). It also does not occur if $b->test is initialized prior to the assignment by reference (e.g. adding a "$b->test = true" row before the assignment) — in this case the assignment by reference also works as intended, and does not emit E_NOTICE. Test script: --------------- error_reporting(E_ALL & E_STRICT); ini_set('display_errors', 1); $a = array(); $b = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS); $b->test = &$a; $b->test[] = "foo"; print($a[0]); Expected result: ---------------- Script should run without notices. Actual result: -------------- Script throws "Undefined index: test" notices every time $b->test is referenced, even though everything works correctly otherwise.