ホームページ > バックエンド開発 > PHPチュートリアル > PHP配列検索(多次元配列検索)_PHPチュートリアル

PHP配列検索(多次元配列検索)_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:44:45
オリジナル
1189 人が閲覧しました

php で配列検索を実装する方法はたくさんありますが、最も簡単な方法は in_array を使用して配列を 1 つずつ比較することです。以下にそれらを紹介します。

一次元配列の検索は簡単 in_array()

value パラメータが文字列で、type パラメータが true に設定されている場合、検索では大文字と小文字が区別されます

コードは次のとおりです コードをコピー

$people = array("ピーター", "ジョー", "グレン", "クリーブランド");

if (in_array("グレン",$people))
{
echo "一致が見つかりました";
}
それ以外
{
echo "一致するものが見つかりません";
}
?>

出力:

一致が見つかりました


array_key_exists() 関数

指定されたキーが配列内で見つかった場合、関数 array_key_exists() は true を返し、それ以外の場合は false を返します。その形式は次のとおりです:

boolean array_key_exists(混合キー、配列配列);

次の例では、配列キーでリンゴを検索し、見つかった場合は、この果物の色を出力します。

コードは次のとおりです
コードをコピー
$fruit["リンゴ"] = "赤";

$fruit["バナナ"] = "黄色";
$fruit["洋ナシ"] = "緑";
if(array_key_exists("apple", $fruit)){
printf("リンゴの色は %s",$fruit["リンゴ"]);
}

//リンゴの色は赤いです

array_search() 関数

array_search() 関数は、配列内の指定された値を検索し、見つかった場合は対応するキーを返し、それ以外の場合は false を返します。その形式は次のとおりです:

混合配列検索(混合針、配列干し草[,ブール厳密])

次の例では、$fruits で特定の日付 (12 月 7 日) を検索し、見つかった場合は、対応する州の関連情報を返します。

コードは次のとおりですコードをコピー $fruits["リンゴ"] = "赤";
$fruits["バナナ"] = "黄色";

$fruits["スイカ"]="グリーン";
$founded = array_search("green", $fruits);
if($founded)
printf("%s は %s に設立されました。",$founded, $fruits[$founded]);

//スイカは緑の上に設立されました。

array_keys() 関数

array_keys() 関数は、検索された配列内で見つかったすべてのキーを含む配列を返します。その形式は次のとおりです:

配列 array_keys(配列 array[,混合検索値])

オプションのパラメータ search_value が含まれている場合、その値に一致するキーのみが返されます。次の例では、$fruit 配列内で見つかったすべての配列を出力します:


コードは次のとおりですコードをコピー $fruits["リンゴ"] = "赤";
$fruits["バナナ"] = "黄色";

$fruits["スイカ"]="グリーン";
$keys = array_keys($fruits);
print_r($keys);

//配列 ( [0] => リンゴ [1] => バナナ [2] => スイカ )

array_values() 関数

array_values() 関数は、配列内のすべての値を返し、返された配列に数値インデックスを自動的に提供します。その形式は次のとおりです:

配列 array_values(配列 配列)

次の例は、$fruits にある各要素の値を取得します。

コードは次のとおりですコードをコピー

$fruits["リンゴ"] = "赤";
$fruits["バナナ"] = "黄色";
$fruits["スイカ"]="グリーン";
$values = array_values($fruits);
print_r($values);

//配列 ([0] => 赤 [1] => 黄 [2] => 緑 )

上記は 1 次元配列の検索のみです。2 次元データまたは多次元データを実装したい場合は、次の例を参照してください。

1 多次元配列のphp検索キー値

以下に例を示します:

コードは次のとおりです$foo[1]['a']['xx'] = '小節 1';
コードをコピー
$foo[1]['b']['xx'] = '小節 2';

$foo[2]['a']['bb'] = '小節 3';
$foo[2]['a']['yy'] = '小節 4';
$foo[3]['c']['dd'] = '小節 3';
$foo[3]['f']['gg'] = '小節 3';
$foo['info'][1] = '小節 5';

小節 3 を見つけたい場合、どうやって検索しますか? 3 つの結果があり、3 つの結果すべてが必要です。次の関数を見てください:

-------------------------------------------------- -------------------------------------------------- ------------------------

関数 array_search_re($needle, $haystack, $a=0, $nodes_temp=array()){
グローバル $nodes_found;
$a++;
foreach ($haystack as $key1=>$value1) {
$nodes_temp[$a] = $key1;
If (is_array($value1)){
array_search_re($needle, $value1, $a, $nodes_temp);
}
else if ($value1 === $needle){
$nodes_found[] = $nodes_temp;
}
}
$nodes_found を返す;
}
-------------------------------------------------- -------------------------------------------------- --------------------------------
この関数は、上記で見つかったすべてのキー名を返すことができます
$result = array_search_re('bar 3', $foo);

print_r($result);

出力結果は以下の通りです:

配列 ( [0] => 配列 ( [1] => 2 [2] => a [3] => bb )

                                                                                                                                                                                                          )



phpは多次元配列のキー名を検索します

コードは次のとおりです コードをコピー

関数 array_search_key($needle, $haystack){
グローバル $nodes_found;

foreach ($haystack as $key1=>$value1) {

if ($key1=== $needle){

$nodes_found[] = $value1;

}
If (is_array($value1)){
array_search_key($needle, $value1);
}


}

$nodes_found を返す;
}
$result = array_search_key('a', $foo);

print_r($result);

出力結果は以下の通りです:

配列
(
[0] => 配列
(
[xx] => 1小節目
)

[1] => 配列
(
[bb] => 3小節目
)

[2] => 配列
(
[yy] => 4小節目
)

)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633084.html技術記事 php で配列検索を実装する方法はたくさんありますが、最も簡単な方法は in_array を使用して配列を走査し、それらを 1 つずつ比較することです。以下にそれらを紹介します。 ...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート