To clarify, this method does not work exactly like array_walk(), since the current key/value of the iterator is not passed to the callback function.
This php method is equivalent to:
<?php
function iterator_apply(Traversable $iterator, $function, array $args)
{
$count = 0;
foreach ($iterator as $ignored)
{
call_user_func_array($function, $args);
$count++;
}
return $count;
}
?>
iterator_apply
(PHP 5 >= 5.1.0)
iterator_apply — ユーザ関数をイテレータのすべての要素でコールする
説明
イテレータ内のすべての要素に対して関数をコールします。
パラメータ
- iterator
-
順次処理したいクラス。
- function
-
すべての要素に対してコールしたいコールバック関数。
注意: iterator での処理を続けるために、 この関数は TRUE を返さなければなりません。
- args
-
コールバック関数に渡す引数。
返り値
イテレータの要素数を返します。
例
例1 iterator_apply() の例
<?php
function print_caps(Iterator $iterator) {
echo strtoupper($iterator->current()) . "\n";
return TRUE;
}
$it = new ArrayIterator(array("Apples", "Bananas", "Cherries"));
iterator_apply($it, "print_caps", array($it));
?>
上の例の出力は以下となります。
APPLES BANANAS CHERRIES
kminkler at synacor dot com
01-Jun-2009 07:02
