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小節目
)
)
|
|
http://www.bkjia.com/PHPjc/633084.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633084.html技術記事 php で配列検索を実装する方法はたくさんありますが、最も簡単な方法は in_array を使用して配列を走査し、それらを 1 つずつ比較することです。以下にそれらを紹介します。 ...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |