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/>\\\';
}