【PHP8.x】acceptメソッドの使い方
acceptメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
acceptメソッドは、ParentIteratorが反復処理を行う際に、現在の要素を結果に含めるべきかどうかを判断するメソッドです。ParentIteratorは、再帰的なデータ構造、例えばディレクトリ構造や多次元配列などの中から、子要素を持つ「親」となる要素だけを抽出するためのイテレータです。このフィルタリング処理の核となるのがacceptメソッドの役割です。イテレータが内部で次の要素に進むたびに、このメソッドが自動的に呼び出されます。メソッドの内部では、現在の要素に対してhasChildrenメソッドを実行し、その要素が子を持っているかどうかを確認します。もし子を持っている場合、acceptメソッドはtrueを返し、その要素は有効なものとして反復処理の結果に含まれます。逆に、子を持たない要素の場合はfalseを返し、その要素はフィルタリングされてスキップされます。このように、このメソッドはParentIteratorがその名前の通り親要素のみを返すという挙動を実現するための重要な判定処理を担っています。
構文(syntax)
1<?php 2 3// 親要素(子を持つ配列)と子要素(文字列)が混在する配列 4$array = [ 5 'fruits' => ['apple', 'banana'], // 親要素 6 'vegetable' => 'carrot', // 子要素のみ 7 'nuts' => ['almond', 'walnut'], // 親要素 8]; 9 10// RecursiveArrayIteratorをParentIteratorでラップします。 11// これにより、子を持つ要素(配列など)のみを反復処理の対象とします。 12$iterator = new ParentIterator(new RecursiveArrayIterator($array)); 13 14// ParentIteratorをforeachでループさせると、 15// 内部で accept() メソッドが自動的に呼び出され、 16// 親要素('fruits'と'nuts')のみが選択されます。 17foreach ($iterator as $key => $value) { 18 echo $key . PHP_EOL; 19} 20 21?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
bool
ParentIterator::accept メソッドは、現在の要素をフィルタリングするかどうかを示す真偽値 (bool) を返します。true ならば要素が受け入れられ、false ならばスキップされます。