【PHP8.x】acceptメソッドの使い方

acceptメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『acceptメソッドは、RecursiveCallbackFilterIteratorが処理している現在の要素が、指定されたフィルタリング条件を満たすかどうかを判定するために呼び出されるメソッドです。このメソッドは、イテレータによる繰り返し処理の中で、各要素に対して内部的に自動で実行されます。実際の判定ロジックは、RecursiveCallbackFilterIteratorのインスタンスを作成する際にコンストラクタへ渡されたコールバック関数によって定義されます。acceptメソッドは、このコールバック関数を、現在の要素、キー、そしてイテレータ自身を引数として呼び出します。コールバック関数がtrueを返した場合、現在の要素はフィルタリング条件を満たすものとみなされ、イテレーションの結果として含まれます。一方、コールバック関数がfalseを返した場合、その要素は条件を満たさないものとして扱われ、結果から除外されます。このように、acceptメソッドはユーザーが定義した柔軟なルールに基づいて、再帰的なデータ構造を効率的にフィルタリングするための核となる機能です。

構文(syntax)

1<?php
2
3$data = [
4    'fruits' => ['apple', 'banana', 'avocado'],
5    'vegetables' => ['carrot', 'asparagus'],
6];
7
8$arrayIterator = new RecursiveArrayIterator($data);
9$iterator = new RecursiveIteratorIterator($arrayIterator);
10
11// コンストラクタに渡したコールバック関数が、accept()メソッドの実質的な処理を定義します。
12$filterIterator = new RecursiveCallbackFilterIterator($iterator, function ($current, $key, $iterator) {
13    // 現在の要素が文字列で、かつ'a'で始まる場合にtrueを返します。
14    // この戻り値がaccept()メソッドの評価結果となります。
15    return is_string($current) && str_starts_with($current, 'a');
16});
17
18// foreachループは内部的にaccept()を呼び出し、trueを返した要素のみを処理します。
19foreach ($filterIterator as $value) {
20    echo $value . PHP_EOL;
21}
22
23?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

このメソッドは、現在の要素がフィルタリング条件を満たす場合に true を、満たさない場合に false を返します。

【PHP8.x】acceptメソッドの使い方 | いっしー@Webエンジニア