iterator_apply

(PHP 5 >= 5.1.0, PHP 7)

iterator_applyВызывает функцию для каждого элемента в итераторе

Описание

int iterator_apply ( Traversable $iterator , callable $function [, array $args ] )

Вызывает функцию для каждого элемента в итераторе.

Список параметров

iterator

Класс для перебора.

function

Функция обратного вызова, которая применяется к каждому элементу.

Замечание: Функция должна возвращать TRUE для того, чтобы продолжать процесс итерации над iterator.

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

Смотрите также

  • array_walk() - Применяет заданную пользователем функцию к каждому элементу массива

add a note add a note

User Contributed Notes 1 note

up
0
ycgambo at outlook dot com
25 days ago
$args is an array and each of its elements are passed to the callback as separate arguments.

so this is the right way to get args:

<?php
$ai
= new ArrayIterator(range(0, 2));

iterator_apply($ai, function() {
   
var_dump(func_get_args());     // use this func
   
return true;
}, array(
1, 2));
?>

output:

array(2) {
  [0] =>
  int(1)
  [1] =>
  int(2)
}
array(2) {
  [0] =>
  int(1)
  [1] =>
  int(2)
}
array(2) {
  [0] =>
  int(1)
  [1] =>
  int(2)
}

--------------------------------------------------
or list each args:

<?php
$ai
= new ArrayIterator(range(0, 2));

iterator_apply($ai, function($arg1, $arg2, $arg3) {
   
var_dump([$arg1, $arg2, $arg3]);
    return
true;
}, array(
1, 2));
?>

same output.
To Top