PHP は、開発者がさまざまなデータ型を簡単に処理および操作できるようにする、一般的に使用されるサーバー側プログラミング言語です。最も一般的に使用されるデータ型の 1 つは配列です。 PHP では、配列の検索は非常に基本的で一般的な操作です。次に、PHP で配列を検索する方法を見てみましょう。
1. PHP での配列検索の概要
PHP では、配列とは順序付けられた要素のセットを指し、キーと値のペアの形式で保存できます。は、関連付けられたキーと対応する値です。これらの配列要素を検索する必要がある場合は、配列検索を使用する必要があります。
配列検索とは、既存の配列内で指定された値またはキーを検索し、目的の値またはキーが配列内に存在するかどうかを判断することを指します。 PHP は、線形検索、二分検索、再帰的検索など、多くの配列検索メソッドを提供します。
2. PHP における配列の線形検索
PHP での最も単純な検索方法は線形検索であり、配列全体を走査して目的のキーまたは値を見つける方法です。線形検索の基本的な考え方は、配列の最初の要素から開始して、ターゲットの値とキーを 1 つずつ比較することです。ターゲットの値またはキーが見つかった場合は、対応するインデックスまたは値が返され、ターゲットが見つからなかった場合は、対応するインデックスまたは値が返されます。配列全体を走査した後で見つかった場合、「 false」が返されると、検索が失敗したことを意味します。
以下はサンプル コードの実装です:
$arr = array("apple", "orange", "banana", "grape"); $target = "banana"; for($i=0;$i<count($arr);$i++){ if($arr[$i] == $target){ echo "目标值 " . $target . " 在数组中的索引是 " . $i; break; } }
上記のコードでは、配列 $arr を定義し、ループを使用して配列内の各要素を反復処理します。ターゲット値が見つかったら、「echo」ステートメントを使用して配列内のターゲット値のインデックスを出力し、「break」ステートメントを使用してループを終了します。
3. PHP での配列の二分検索
PHP では、配列が順序付けされている場合、二分検索を使用して検索を高速化できます。二分探索は比較ベースの探索アルゴリズムであり、分割統治思考の典型的な応用例です。
二分探索の基本的な考え方は、順序付けられた配列を 2 つの部分に分割し、配列の中央にある値を見つけ、ターゲットがその値より小さい場合はターゲットとこの値を比較することです。 , 次に、前半 (左側) で再帰検索します。ターゲットがこの値より大きい場合は、後半 (右側) で再帰的に検索します。ターゲットがこの値と等しい場合は、対応するインデックスまたは値を返します。
以下はサンプル コードの実装です:
function binary_search($arr,$target){ $low = 0; $high = count($arr) - 1; while($low <= $high) { $middle = intval(($low + $high)/2); if($arr[$middle] == $target) { return $middle; } elseif ($arr[$middle] > $target) { $high = $middle -1; } else { $low = $middle + 1; } } return -1; } $arr = array(1,3,5,7,9,11); $target = 7; echo "目标值 " . $target . " 在数组中的索引是 " . binary_search($arr,$target);
上記のコードでは、関数 binary_search を定義します。この関数は、順序付けされた配列とターゲット値をパラメーターとして受け取り、ターゲットのインデックスを返します。配列内の値。ループと条件ステートメントは、二分探索アルゴリズムを実装するために関数で使用されます。
4. PHP での配列の再帰検索
再帰検索は単純ですが、比較的非効率な検索方法です。独自の関数を再帰的に呼び出して配列全体を走査し、ターゲット値を見つけます。またはキー。再帰的検索の基本的な考え方は、配列が空の場合は「false」を返し、そうでない場合は、最初の配列要素がターゲットの値またはキーであるかどうかを確認し、そうである場合は対応するインデックスまたは値を返し、それ以外の場合は呼び出しを行います。独自の関数を再帰的に使用して、最初の要素を除く残りの配列要素を処理します。
以下はサンプル コードの実装です:
function search($arr,$target) { if(empty($arr)){ return false; } if($arr[0] == $target){ return 0; } else { $index = search(array_slice($arr,1),$target); if($index === false) { return false; } else { return $index+1; } } } $arr = array("apple", "orange", "banana", "grape"); $target = "orange"; echo "目标值 " . $target . " 在数组中的索引是 " . search($arr,$target);
上記のコードでは、配列とターゲット値をパラメーターとして受け取り、ターゲット値を Index に返す関数検索を定義します。配列内で。この関数は、独自の関数への再帰呼び出しを使用して配列全体を走査し、ターゲットの値またはキーを見つけます。
5. まとめ
以上は、PHP で配列を検索する方法の紹介です。さまざまなニーズに応じて、適切な検索アルゴリズムを選択できます。順序なし配列の場合は、線形検索または再帰検索を選択できます。順序付き配列の場合は、検索効率を向上させるために二分検索を選択できます。実際の開発においては、実情に応じて手法を選択することが非常に重要であり、パフォーマンスへの影響も非常に大きくなります。
以上がPHPで配列を検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。