ホームページ > バックエンド開発 > PHPの問題 > PHPで配列を検索する方法

PHPで配列を検索する方法

PHPz
リリース: 2023-04-20 15:21:33
オリジナル
1888 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート