ホームページ > バックエンド開発 > PHPチュートリアル > PHP 多次元配列内のキーをその値によって効率的に見つけるにはどうすればよいですか?

PHP 多次元配列内のキーをその値によって効率的に見つけるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-09 20:59:15
オリジナル
565 人が閲覧しました

How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?

PHP 多次元配列検索 (値によるキーの検索)

このシナリオでは、製品のコレクションを表す多次元配列があります。各製品は、名前、スラッグ、価格などのプロパティによって定義されます。目標は、スラッグ プロパティを使用して配列で特定の製品を検索し、配列内の対応するキーを返す方法を見つけることです。

これを実現する 1 つの方法は、array_search 関数と array_column 関数を利用することです。このアプローチをカプセル化するカスタム関数を次に示します。

function array_search_multidim(array $array, string $column, string $key)
{
    return array_search($key, array_column($array, $column));
}
ログイン後にコピー

この関数を使用するには、次のように呼び出します。

$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');
ログイン後にコピー

これは、$products 配列で製品を検索します。 「breville-one-touch-tea-maker-BTM800XL」に等しい slug プロパティを取得し、対応するキーを返します。この例では、値 1 が返されます。

もう 1 つの可能な解決策は、array_search 関数に基づくものです。このアプローチでは、PHP 5.5.0 以降を使用する必要があります。

$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));
ログイン後にコピー

このコードは、前の例と同じ結果を達成します。

array_walk_recursive を使用する 3 番目の方法もあります。配列のすべての要素を再帰的に調べて、スラッグの値を指定された値と比較します。 value:

function array_walk_recursive_search($input, $needle, &$result = null)
{
    if (is_array($input)) {
        foreach ($input as $key => $value) {
            array_walk_recursive_search($value, $needle, $result);
        }
    } else {
        if ($input === $needle) {
            $result = $key;
        }
    }
}
ログイン後にコピー

この関数は次のように呼び出すことができます:

array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);
ログイン後にコピー

array_walk_recursive メソッドはより一般的で、あらゆるタイプの配列構造を処理できることに注意することが重要です。一般に、他の方法よりも遅いです。

全体的に、使用する最適な方法は、特定のニーズと制約によって異なります。あなたのアプリケーション。ただし、最も効率的な 2 つの方法は、array_search 関数と array_column 関数を利用する方法です。

以上がPHP 多次元配列内のキーをその値によって効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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