ホームページ  >  記事  >  バックエンド開発  >  PHP配列内の複数の値をクエリする方法

PHP配列内の複数の値をクエリする方法

PHPz
PHPzオリジナル
2023-04-18 09:06:05613ブラウズ

Web 開発では、配列のクエリが必要になることがよくあります。配列内の複数の値をクエリする必要がある場合がありますが、1 つずつ検索すると時間と労力がかかるだけでなく、非効率的になります。また、PHP は、配列内の複数の値をクエリする簡単な方法を提供します。

まず、以下に示すように、クエリ対象の配列を定義する必要があります:

$array = array("red", "blue", "green", "yellow", "white", "black");

この配列内の複数の値をクエリする必要があるとします。たとえば、次のようにする必要があります。配列内の「red」、「blue」、「black」をクエリする場合、PHP の array_intersect() 関数を使用してこれを実現できます。

この関数は 2 つ以上の配列を受け入れ、すべての配列に含まれる要素を含む新しい配列を返すことができます。

array_intersect() 関数を使用して複数の値をクエリする方法を見てみましょう。まず複数の値を配列に形成します:

$to_query = array("red", "blue", "black");

次に、array_intersect() 関数を使用して、この配列内の複数の値をクエリします:

$result = array_intersect($array, $to_query);

このようにして、$result 配列でクエリする必要がある複数の値を取得できます。 print_r() 関数を使用して、$result 配列を出力できます:

print_r($result);

出力結果は次のとおりです:

Array
(
    [0] => red
    [1] => blue
    [5] => black
)

As you配列に「赤」、「青」、「黒」の 3 つの値をクエリしたことがわかります。出力結果の配列インデックスは元の配列のインデックスと同じであることに注意してください。

上で述べたように、array_intersect() 関数は複数の配列を受け入れることができるため、一度に複数の値のセットをクエリすることもできます。

もっと複雑な例を見てみましょう。複数のユーザーに関する情報を含む連想配列があるとします。

$users = array(
    array("name" => "Tom", "age" => 20, "gender" => "M"),
    array("name" => "Jack", "age" => 22, "gender" => "M"),
    array("name" => "Mary", "age" => 21, "gender" => "F"),
    array("name" => "Lucy", "age" => 19, "gender" => "F")
);

次に、年齢が 19 歳または 22 歳、性別が男性であるユーザーに関する情報をクエリする必要があります。クエリ対象の条件を含む連想配列を形成できます:

$to_query = array("age" => array(19, 22), "gender" => "M");

この配列の最初の要素は、クエリ対象の 2 つの年齢値を含む配列です。2 番目の要素は、クエリ対象の性別値です。 。

その後、array_intersect() 関数を使用してクエリを実行できます。

function array_query($array, $to_query) {
    return array_filter($array, function ($item) use ($to_query) {
        foreach ($to_query as $key => $value) {
            if (!in_array($item[$key], (array)$value)) {
                return false;
            }
        }
        return true;
    });
}

$result = array_query($users, $to_query);

ここでは array_query() 関数をカスタマイズしました。この関数は 2 つのパラメータを受け入れます。最初のパラメータはクエリ対象の配列で、2 番目のパラメータはクエリ対象の条件です。

関数は内部で PHP の array_filter() 関数と匿名関数を使用して配列をフィルタリングします。入力クエリ条件 $to_query の場合、関数はまず、この条件に基づいて条件を満たす配列要素をフィルターします。

次に、結果をクエリ結果 $result に返します。

最後に、print_r() 関数を使用してクエリ結果を出力できます:

print_r($result);

出力結果は次のとおりです:

Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 20
            [gender] => M
        )

    [1] => Array
        (
            [name] => Jack
            [age] => 22
            [gender] => M
        )

)

Asご覧のとおり、条件を満たす 2 つのユーザー情報の照会が成功しました。

実際の開発では、配列に対して複数値のクエリを実行する必要があることがよくあります。この関数は、PHP の array_intersect() 関数を使用して簡単に実装できます。さらに、ニーズに応じてさらにカプセル化し、独自のニーズに合った機能を構築することもできます。

以上がPHP配列内の複数の値をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。