#38397 [Opn->Asn]: ArrayObject not acting as object
| From: | tony2001@php.net | 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