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

多次元 PHP 配列の「slug」キー内の値を効率的に検索するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-05 08:58:11
オリジナル
958 人が閲覧しました

How Can I Efficiently Search for a Value within the

値による多次元 PHP 配列の検索

このシナリオでは、多次元配列から特定の値を検索する関数を開発する必要があります。 「slug」キー内の値。以下に検索プロセスの内訳と検討できる解決策を示します。

array_search() と array_column() の使用

array_search() と array_column() の紹介。 array_search() は配列内の値のインデックスを効率的に検索し、array_column() は多次元配列から特定の値を抽出し、抽出された値を含む新しい配列を作成します。これらの関数を使用すると、次のように配列を検索できます。

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

カスタム再帰関数の使用

あるいは、配列を再帰的に実行し、「スラッグ」値をターゲットと比較しますvalue:

function search_array_recursive($array, $key, $value) {
  foreach ($array as $subarray) {
    if (is_array($subarray)) {
      $found = search_array_recursive($subarray, $key, $value);
      if ($found !== false) {
        return $found;
      }
    } else if ($subarray[$key] == $value) {
      return $subarray;
    }
  }
  return false;
}
ログイン後にコピー

array_walk_recursive() の使用

さらに、array_walk_recursive() を利用して配列を走査し、検索ロジックを各要素に適用できます:

function search_array_walk_recursive($array, $key, $value, &$found) {
  array_walk_recursive($array, function($subarray) use ($key, $value, &$found) {
    if (is_array($subarray)) {
      search_array_walk_recursive($subarray, $key, $value, $found);
    } else if ($subarray[$key] == $value) {
      $found = true;
    }
  });
}
ログイン後にコピー

パフォーマンス考慮事項

array_search() メソッドは、一般に、特に配列サイズが大きい場合、他の手法よりも優れたパフォーマンスを発揮します。ただし、正確な結果を得るにはインデックス付きのサブ配列が必要であるため、配列の構造を考慮することが重要です。

概要

array_search() メソッドと array_column の組み合わせ() は、特定の値で多次元配列を検索するための効率的で読みやすいソリューションを提供します。ただし、インデックスのない部分配列をサポートする必要がある場合は、再帰的メソッドが実行可能な代替手段を提供します。

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

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