【PHP8.x】firstElementChildプロパティの使い方

firstElementChildプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

firstElementChildプロパティは、Dom\XMLDocumentクラスのインスタンスにおいて、現在のノードが持つ最初の子要素ノードを保持するプロパティです。このプロパティの大きな特徴は、テキストノードやコメントノードといった要素以外のノードを完全に無視し、子ノードの中から最初に現れる要素ノードのみを厳選して取得する点にあります。

XMLドキュメントをDOM(Document Object Model)としてプログラムから操作する際、特定の親要素の子要素の中から、実際の構造を持つ要素に直接アクセスしたい場面は頻繁に発生します。例えば、ドキュメントのルート要素の直下にある主要な要素を取得する際や、特定の親要素が多くのテキストノードや空白行を含んでいても、その中から最初に見つかる意味のある要素ノードを効率的に特定したい場合に、このプロパティは非常に有効です。

このプロパティが返す値は、見つかった最初の子要素を表すDOMElement型のオブジェクトです。このDOMElementオブジェクトを通じて、その要素の属性値や子要素、テキスト内容などにアクセスし、さらに複雑なDOM操作を行うことが可能になります。もし、現在のノードに要素ノードとしての子要素が一つも存在しない場合には、このプロパティはnullを返します。これにより、対象の要素が空であるかどうかの判断を容易に行うことができます。

なお、DOM操作にはfirstChildという似たようなプロパティも存在しますが、firstElementChildプロパティは、子ノードの中から要素ノードのみを対象とする点で明確な違いがあります。firstChildがテキストノードやコメントノードなども含めたすべての子ノードの先頭を返すのに対し、firstElementChildは純粋な要素に限定されるため、要素に特化した処理を行う際にコードの記述を簡潔にし、意図を明確にする上で非常に有用です。

構文(syntax)

1<?php
2$document = new Dom\XMLDocument();
3$document->loadXML('<root><item1 id="a"/><item2 id="b"/></root>');
4
5$firstElementChild = $document->firstElementChild;
6
7if ($firstElementChild !== null) {
8    echo $firstElementChild->nodeName; // 'root'
9} else {
10    echo "No element child found.";
11}

引数(parameters)

引数なし

引数はありません

戻り値(return)

Dom\Element|null

このプロパティは、XMLドキュメントのルート要素の最初の子要素を表します。該当する要素が存在しない場合は、nullが返されます。