ArrayIterator::current

(no version information, might be only in CVS)

ArrayIterator::current --  Return current array entry

Description

mixed ArrayIterator::current ( void )

This function returns the current array entry

例子 1. ArrayIterator::current() example

<?php
$array
= array('1' => 'one',
               
'2' => 'two',
               
'3' => 'three');

$arrayobject = new ArrayObject($array);

for(
$iterator = $arrayobject->getIterator();
    
$iterator->valid();
    
$iterator->next()) {

    echo
$iterator->key() . ' => ' . $iterator->current() . "\n";
}
?>

上例将输出:

1 => one
2 => two
3 => three


add a note add a note User Contributed Notes
pcdinh at phpvietnam dot net
20-Mar-2006 09:47
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/>\\\';
}