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/>\\\';
}
ArrayIterator::current
(PHP 5 >= 5.0.0)
ArrayIterator::current — Retorna o valor do elemento atual do array
Parâmetros
Esta função não contém parâmetros.
Valor Retornado
O atual elemento do array.
Exemplos
Exemplo #1 Exemplo de ArrayIterator::current()
<?php
$array = array('1' => 'um',
'2' => 'dois',
'3' => 'três');
$arrayobject = new ArrayObject($array);
for($iterator = $arrayobject->getIterator();
$iterator->valid();
$iterator->next()) {
echo $iterator->key() . ' => ' . $iterator->current() . "\n";
}
?>
O exemplo acima irá imprimir:
1 => um 2 => dois 3 => três
pcdinh at phpvietnam dot net
20-Mar-2006 05:47
