and to iterate recursively use the (sparsely documented) RecursiveArrayIterator
<?php
$fruits = array(
"apple" => "yummy",
"orange" => "ah ya, nice",
"grape" => "wow, I love it!",
"plum" => "nah, not me"
);
$veg = array("potato" => "chips", "carrot" => "soup");
$grocery = array($fruits, $veg);
$obj = new ArrayObject( $grocery );
$it = new RecursiveIteratorIterator( new RecursiveArrayIterator($grocery));
foreach ($it as $key=>$val)
echo $key.":".$val."\n";
?>
Output
--------
apple:yummy
orange:ah ya, nice
grape:wow, I love it!
plum:nah, not me
potato:chips
carrot:soup
A classe ArrayIterator
Introdução
Este iterator permite remover e modificar valores e chaves quando iterando arrays e objetos.
Quando você quiser iterar o mesmo array múltiplas vezes você precisa instanciar ArrayObject e criar instâncias de ArrayIterator que é consultado usando foreach ou chamando o método getIterator() manualmente.
Sinopse da classe
Índice
- ArrayIterator::append — Append an element
- ArrayIterator::asort — Sort array by values
- ArrayIterator::__construct — Construct an ArrayIterator
- ArrayIterator::count — Count elements
- ArrayIterator::current — Retorna o valor do elemento atual do array
- ArrayIterator::getArrayCopy — Get array copy
- ArrayIterator::getFlags — Get flags
- ArrayIterator::key — Retorna a chave do elemento atual do array
- ArrayIterator::ksort — Sort array by keys
- ArrayIterator::natcasesort — Sort an array naturally, case insensitive
- ArrayIterator::natsort — Sort an array naturally
- ArrayIterator::next — Avança para o próximo elemento
- ArrayIterator::offsetExists — Check if offset exists
- ArrayIterator::offsetGet — Get value for an offset
- ArrayIterator::offsetSet — Set value for an offset
- ArrayIterator::offsetUnset — Unset value for an offset
- ArrayIterator::rewind — Recoloca o array no início
- ArrayIterator::seek — Aponta para determinada posição
- ArrayIterator::serialize — Serialize
- ArrayIterator::setFlags — Set behaviour flags
- ArrayIterator::uasort — User defined sort
- ArrayIterator::uksort — User defined sort
- ArrayIterator::unserialize — Unserialize
- ArrayIterator::valid — Verifica se o array possui mais elementos
ArrayIterator
Sean Burlington
26-May-2009 12:15
26-May-2009 12:15
Venelin Vulkov
11-Nov-2008 11:44
11-Nov-2008 11:44
Another fine Iterator from php . You can use it especially when you have to iterate over objects
<?php
$fruits = array(
"apple" => "yummy",
"orange" => "ah ya, nice",
"grape" => "wow, I love it!",
"plum" => "nah, not me"
);
$obj = new ArrayObject( $fruits );
$it = $obj->getIterator();
// How many items are we iterating over?
echo "Iterating over: " . $obj->count() . " values\n";
// Iterate over the values in the ArrayObject:
while( $it->valid() )
{
echo $it->key() . "=" . $it->current() . "\n";
$it->next();
}
// The good thing here is that it can be iterated with foreach loop
foreach ($it as $key=>$val)
echo $key.":".$val."\n";
/* Outputs something like */
Iterating over: 4 values
apple=yummy
orange=ah ya, nice
grape=wow, I love it!
plum=nah, not me
?>
Regards.
