配列交差の PHP カスタム実装

WBOY
リリース: 2023-05-23 10:32:36
オリジナル
449 人が閲覧しました

PHP 開発では、配列の交差は一般的な操作です。ただし、PHP が提供する配列交差関数は、2 つの配列の場合のみ処理できます。複数の配列の交差を処理す​​る必要がある場合は、交差演算をカスタマイズする必要があります。

この記事では、PHP 配列の共通部分をカスタマイズし、実装コードを提供する方法を紹介します。

  1. 問題の説明

複数の配列の共通部分を処理する必要があります。たとえば、次の 4 つの配列があります:

$arr1 = array(1, 2, 3);
$arr2 = array(2, 3, 4);
$arr3 = array(3, 4, 5);
$arr4 = array(4, 5, 6);
ログイン後にコピー

次に必要なものがあります。これら 4 つの配列の交差を解決します。

  1. 解決策

次の手順で配列の交差を実現できます。

2.1 すべての配列の要素を新しい配列に保存し、実行します。新しいアレイに対する重複排除操作。

2.2 元の配列に各要素が出現する回数を数えます。その数が元の配列の数と等しい場合、その要素は元のすべての配列に出現したことを意味し、その要素が元の配列に追加されます。結果の配列。

以下は具体的な実装コードです:

function array_intersect_multi() {
  $arrays = func_get_args();
  $counts = array_count_values(call_user_func_array('array_merge', $arrays));
  $intersected_array = array();
  $arrays_count = count($arrays);
  
  foreach ($counts as $value => $count) {
    if ($count === $arrays_count) {
      $intersected_array[] = $value;
    }
  }

  return $intersected_array;
}
ログイン後にコピー
  1. 関数の説明

上記のコードの関数 array_intersect_multi()複数の配列交差演算を実装できます。

この関数には、配列コレクションである入力パラメーターが 1 つあります。配列コレクションは、複数の配列で構成される配列です。

この関数は、配列コレクション内のすべての配列の要素を新しい配列に追加し、新しい配列に対して重複排除操作を実行します。

次に、関数は元の配列に各要素が出現した回数をカウントします。その数が元の配列の数と等しい場合、その要素は元の配列のすべてに出現したことを意味します。そして結果の配列に追加されます。

最後に、関数は配列の交差結果を返します。

上記の関数を使用して 4 つの配列の共通部分を解決できます。例は次のとおりです:

$arr1 = array(1, 2, 3);
$arr2 = array(2, 3, 4);
$arr3 = array(3, 4, 5);
$arr4 = array(4, 5, 6);

$intersected_array = array_intersect_multi($arr1, $arr2, $arr3, $arr4);
print_r($intersected_array);
ログイン後にコピー

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

Array
(
    [0] => 4
)
ログイン後にコピー

ご覧のとおり、4 つの配列の共通部分は 4 です。

  1. 概要

配列の交差演算をカスタマイズすることで、複数の配列の交差を簡単に処理できます。この記事では配列の交差を実装する手順とコードを紹介しますので、皆様のお役に立てれば幸いです。

以上が配列交差の PHP カスタム実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!