note 63336 added to function.arrayiterator-current
| From: | pcdinh at phpvietnam dot net | Date: | Mon, 20 Mar 2006 13:47:14 +0000 |
| Subject: | note 63336 added to function.arrayiterator-current | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-106103@lists.php.net to get a copy of this message | ||
ArrayIterator is only used for interating simple arrays of which the value part is not another
array. You can test it with a more complex array like this:
$arr = array (
\\\'Section 1\\\' => array (
\\\'Cat 1\\\' => array (
1 => array (
1 => \\\'So 1\\\',
2=> \\\'So 2\\\'
),
2 => \\\'So 2\\\'
),
\\\'Cat 2\\\' => array (
\\\'Sub-cat 1\\\' => array (
1 => \\\'So 1\\\',
2=> \\\'So 2\\\'
),
\\\'Sub-cat 2\\\' => \\\'So 2\\\'
)
),
\\\'Section 2\\\' => array (
\\\'Cat 1\\\' => array (
),
\\\'Cat 2\\\' => array (
\\\'Sub-cat 1\\\' => array (
1 => \\\'So 1\\\',
2=> \\\'So 2\\\'
),
\\\'Sub-cat 2\\\' => \\\'So 2\\\'
)
)
);
$arrayobject = new ArrayObject($arr);
for($iterator = $arrayobject->getIterator();
$iterator->valid();
$iterator->next()) {
echo $iterator->key() . \\\' => \\\' . $iterator->current() . \\\"<br
/>\\\";
}
The above scriptlet will return
Section 1 => Array
Section 2 => Array
because it can not recursively iterate throught the array.
Do the following instead (in PHP5.1):
$arrayIterator = new RecursiveArrayIterator($arr);
$iterator = new RecursiveIteratorIterator($arrayIterator);
foreach ($iterator as $val) {
echo $val.\\\'<br/>\\\';
}
----
Server IP: 66.163.161.117
Probable Submitter: 69.61.55.154
----
X-Spam-Status: No, hits=3.3 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER,
HTML_MESSAGE autolearn=no version=2.64
----
Manual Page -- http://www.php.net/manual/en/function.arrayiterator-current.php
Edit -- http://master.php.net/note/edit/63336
Del: integrated -- http://master.php.net/note/delete/63336/integrated
Del: useless -- http://master.php.net/note/delete/63336/useless
Del: bad code -- http://master.php.net/note/delete/63336/bad+code
Del: spam -- http://master.php.net/note/delete/63336/spam
Del: non-english -- http://master.php.net/note/delete/63336/non-english
Del: in docs -- http://master.php.net/note/delete/63336/in+docs
Del: other reasons-- http://master.php.net/note/delete/63336
Reject -- http://master.php.net/note/reject/63336
Search -- http://master.php.net/manage/user-notes.php