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

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

作成日: 更新日:

基本的な使い方

isSameNodeメソッドは、2つの属性ノード(DOMAttrオブジェクト)が、DOMツリー内で完全に同一のノードであるかどうかを判定するために使用されるメソッドです。このメソッドは、引数として比較対象のノードを受け取り、メソッドを呼び出したノードと引数のノードが、メモリ上で全く同じオブジェクトインスタンスを参照しているかを厳密に確認します。もし2つの変数が同じ属性ノードそのものを指している場合、このメソッドはtrueを返します。一方で、属性名や値が全く同じであっても、別々に生成されたり取得されたりした異なるオブジェクトである場合にはfalseを返します。この「オブジェクトの同一性」を比較する点は、ノードの内容が等しいかどうかという「等価性」を比較するisEqualNodeメソッドとの大きな違いです。したがって、2つのノードが内容的に同じかではなく、参照として同じものであるかを正確に知りたい場合に使用します。

構文(syntax)

1<?php
2
3$doc = new DOMDocument();
4$doc->loadXML('<root><item id="A" /><item id="B" /></root>');
5
6// 基準となる属性ノードを取得
7$itemA = $doc->getElementsByTagName('item')->item(0);
8$attrA = $itemA->getAttributeNode('id');
9
10// 比較対象となるノードを準備
11$sameAttrNode = $attrA; // attrA と全く同じノードオブジェクト
12$itemB = $doc->getElementsByTagName('item')->item(1);
13$attrB = $itemB->getAttributeNode('id'); // 別の要素の属性ノードオブジェクト
14
15// isSameNodeは、2つの変数が同じノードオブジェクトを参照しているかを判定します
16$result1 = $attrA->isSameNode($sameAttrNode);
17var_dump($result1); // bool(true)
18
19$result2 = $attrA->isSameNode($attrB);
20var_dump($result2); // bool(false)
21
22?>

引数(parameters)

DOMNode $otherNode

  • DOMNode $otherNode: 比較対象となる別のDOMNodeオブジェクト

戻り値(return)

bool

DOMAttr::isSameNode メソッドは、2つのDOMAttrノードが同じノードを参照しているかどうかを判定し、真偽値 (bool) を返します。同じノードを参照している場合は true、そうでない場合は false を返します。

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