【PHP8.x】iterator_apply関数の使い方

作成日: 更新日:

iterator_apply関数は、指定されたイテレータの各要素に対して、ユーザーが定義したコールバック関数を実行する関数です。イテレータとは、配列やオブジェクトの中身を一つずつ順番に処理するための仕組みを指します。この関数は、foreachループを使って各要素を処理する代わりに、より簡潔な方法で共通の処理を適用したい場合に役立ちます。

主な用途としては、例えば、特定の条件を満たす要素に対して何らかの操作を行ったり、各要素の値を変換したりする場面で利用されます。この関数を使用する際には、まず処理の対象となるIteratorオブジェクトを指定し、次に各要素に適用したい処理を記述したコールバック関数を渡します。コールバック関数は、現在のイテレータの要素を引数として受け取ります。オプションとして、コールバック関数に追加で渡したい引数も指定できます。

iterator_apply関数は、すべての要素への適用が成功した場合にtrueを返します。しかし、もし途中でコールバック関数がfalseを返した場合、処理は中断され、この関数自体もfalseを返します。これにより、特定の条件で処理を停止させることも可能です。この関数は、ループ処理を抽象化し、コードの可読性を高めることにも貢献します。

基本的な使い方

構文(syntax)

<?php

$arrayData = ['apple', 'banana', 'orange'];
$myIterator = new ArrayIterator($arrayData);

$myCallback = function (Iterator $iterator): bool {
    // イテレータの現在の要素とキーはここで利用可能
    // $iterator->current();
    // $iterator->key();
    return true; // trueを返すとイテレーションが継続、falseを返すと停止
};

$processedCount = iterator_apply($myIterator, $myCallback);

?>

引数(parameters)

Traversable $iterator, callable $callback, array $args = []

  • Traversable $iterator: 処理対象となるイテレータブルなオブジェクト
  • callable $callback: $iterator の各要素に対して実行するコールバック関数
  • array $args = []: コールバック関数に渡す追加の引数配列

戻り値(return)

int

指定されたイテレータに対してコールバック関数を適用し、処理された要素の数を整数で返します。

【PHP8.x】iterator_apply関数の使い方 | いっしー@Webエンジニア