【PHP8.x】DOMEntity::contains()メソッドの使い方
containsメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
containsメソッドは、指定したノードがこのエンティティノードの子孫であるかどうかを判定するメソッドです。DOMツリーと呼ばれる、XMLやHTML文書の階層構造内において、あるノードが別のノードの内側に含まれているかという包含関係を調べるために使用されます。ここでいう「子孫」とは、直接の子ノードだけでなく、孫ノードやそれ以降のさらに深い階層に存在するすべてのノードを含みます。メソッドの引数に調査対象のノードオブジェクトを渡すと、そのノードがメソッドを呼び出したノードの子孫であればtrueを、そうでなければfalseを返します。なお、ノード自身を引数に渡した場合も、自分自身を含んでいるとみなされtrueが返ります。このメソッドを利用することで、文書内の特定の要素が期待通りの場所に配置されているかを確認したり、親子関係に基づいた処理を実装したりする際に役立ちます。
構文(syntax)
1public DOMNode::contains(?DOMNode $other): bool
引数(parameters)
DOMNode|null $other
- DOMNode|null $other: 検索対象となる別のDOMNodeオブジェクト、またはnull
戻り値(return)
戻り値なし
戻り値はありません
サンプルコード
PHP配列に値が含まれるか確認する
1<?php 2 3declare(strict_types=1); 4 5/** 6 * 配列に指定された値が含まれているかを確認し、結果を表示します。 7 * 8 * @param mixed $targetValue 検索する値 9 * @param array<int|string, mixed> $haystackArray 検索対象の配列 10 */ 11function checkIfValueExistsInArray(mixed $targetValue, array $haystackArray): void 12{ 13 // 配列の内容と検索する値を分かりやすく表示 14 echo '配列: [' . implode(', ', $haystackArray) . "]\n"; 15 echo "検索する値: " . var_export($targetValue, true) . "\n"; 16 17 // in_array()関数を使用して、配列内に値が存在するかどうかをチェックします。 18 // 第1引数: 検索する値 ($targetValue) 19 // 第2引数: 検索対象の配列 ($haystackArray) 20 // 第3引数(true): 型も比較する厳密なチェックを行う (例: 1 と "1" は別物とみなす) 21 if (in_array($targetValue, $haystackArray, true)) { 22 echo "結果: この値は配列内に存在します。\n"; 23 } else { 24 echo "結果: この値は配列内に存在しません。\n"; 25 } 26 27 echo "--------------------\n"; 28} 29 30// チェック対象のサンプル配列を定義します 31$programmingLanguages = ['PHP', 'JavaScript', 'Python', 'Java']; 32 33// ケース1: 配列に存在する値を検索 34checkIfValueExistsInArray('Python', $programmingLanguages); 35 36// ケース2: 配列に存在しない値を検索 37checkIfValueExistsInArray('Ruby', $programmingLanguages); 38 39// ケース3: 数値の配列で検索 40$numbers = [1, 2, 3, 4, 5]; 41checkIfValueExistsInArray(3, $numbers); 42 43// ケース4: 厳密なチェックにより、型が違うため「存在しない」と判定されるケース 44// '3' (文字列) は 3 (整数) とは異なります。 45checkIfValueExistsInArray('3', $numbers); 46
このPHPサンプルコードは、配列の中に特定のデータが存在するかどうかを確認する方法を解説しています。主にin_array()というPHPの標準関数を使用します。この関数は、第1引数に検索したい値、第2引数に検索対象となる配列を指定すると、値が存在すればtrue(真)、存在しなければfalse(偽)を返します。サンプルコードでは、第3引数にtrueを指定して「厳密な比較」を行っています。これにより、値だけでなくデータ型まで一致しているかを判定するため、例えば数値の3と文字列の'3'は区別されます。コード内のcheckIfValueExistsInArrayという関数は、このin_array()の結果を使って、検索対象の値と配列の内容、そして検索結果を画面に分かりやすく表示する役割を担っています。この関数自体は結果を表示するだけで、特定の値を返しません。サンプルでは、文字列や数値の配列を使って、値が存在する場合、存在しない場合、そしてデータ型が異なるために存在しないと判定される場合の具体的な動作を示しています。
このコードで最も重要なのは、in_array関数の第3引数にtrueを指定している点です。これにより、値だけでなくデータ型も一致するかを調べる「厳密な比較」が行われます。これを省略したりfalseにしたりすると、例えば数値の3と文字列の'3'が同じものと判定され、意図しないバグの原因になることがあります。安全なコードを書くためには、常に厳密な比較を意識することが重要です。また、この関数は文字列の大文字と小文字を区別するため、'PHP'と'php'は別の値として扱われます。大文字・小文字を区別せずに検索したい場合は、比較前に値を変換する工夫が必要です。