#38397 [Opn->Asn]: ArrayObject not acting as object

From: Date: Wed, 09 Aug 2006 20:53:59 +0000
Subject: #38397 [Opn->Asn]: ArrayObject not acting as object
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-100609@lists.php.net to get a copy of this message
ID: 38397 Updated by: tony2001@php.net Reported By: ante at novisplet dot com -Status: Open +Status: Assigned Bug Type: SPL related Operating System: Win XP PHP Version: 5.2.0RC1 -Assigned To: +Assigned To: helly Previous Comments: ------------------------------------------------------------------------ [2006-08-09 10:23:43] ante at novisplet dot com <?php function print_pre($text, $ret = false) { $return = "<pre>" . print_r($text, true) . "</pre>"; if($ret) return $return; print($return); } $array = new ArrayObject(); $node1 = new ArrayObject(); $node2 = new ArrayObject(); $group = new stdClass(); $group->name = "test name"; $group->group_id = 10; $documents = new ArrayObject(); $document1 = new stdClass(); $document1->name = "Document name"; $document1->group_id = 10; $documents->append($document1); $documents->append($document1); $node1->offsetSet("group", $group); $node1->offsetSet("documents", $documents); $node2->offsetSet("group", $group); $node2->offsetSet("documents", $documents); $array->append($node1); $array->append($node2); //print_pre($array); //doesn't work foreach($array as $node) { print($node->group->name); } //works foreach($array as $node) { print($node['group']->name); } ?> ------------------------------------------------------------------------ [2006-08-09 09:46:52] tony2001@php.net Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2006-08-09 09:32:57] ante at novisplet dot com Description: ------------ If I have an array like this: ArrayObject Object ( [group] => Document_Group Object ( [_dbat] => 0 [_table] => document_group [_tableat] => document_group [_where] => [_saved] => 1 [_lasterr] => [_original] => Array ( [0] => 1 [1] => skupina 1 ) [group_id] => 1 [name] => skupina 1 ) [documents] => ArrayObject Object ( [0] => Document Object ( [_dbat] => 0 [_table] => document [_tableat] => document [_where] => [_saved] => 1 [_lasterr] => [_original] => Array ( [0] => 1 [1] => Dokument 1 [2] => [3] => 1 ) [document_id] => 1 [name] => Dokument 1 [path] => [group_id] => 1 ) [1] => Document Object ( [_dbat] => 0 [_table] => document [_tableat] => document [_where] => [_saved] => 1 [_lasterr] => [_original] => Array ( [0] => 3 [1] => Dokument 3 [2] => [3] => 1 ) [document_id] => 3 [name] => Dokument 3 [path] => [group_id] => 1 ) [2] => Document Object ( [_dbat] => 0 [_table] => document [_tableat] => document [_where] => [_saved] => 1 [_lasterr] => [_original] => Array ( [0] => 5 [1] => Dokument 5 [2] => [3] => 1 ) [document_id] => 5 [name] => Dokument 5 [path] => [group_id] => 1 ) ) ) And if I want to access group name the path would be $array->group->name but it doesn't work... I have to use "old style" $array['group']->name to get group name... Reproduce code: --------------- See description... Expected result: ---------------- Name of the group to be in $array->group->name Actual result: -------------- but it is in $array['group']->name Although everything is "ArrayObject"-ed... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38397&edit=1

« previous php.bugs (#100609) next »