ホームページ  >  記事  >  バックエンド開発  >  PHPで2次元配列に重複値があるかどうかを確認する方法

PHPで2次元配列に重複値があるかどうかを確認する方法

PHPz
PHPzオリジナル
2023-04-26 14:21:151052ブラウズ

PHP プログラミングでは、配列は複数の値を保存し、キーを介してアクセスできるようにする非常に重要なデータ型です。 2 次元配列は 1 次元配列に次元を追加したもので、より複雑なデータ構造を格納できます。しかし、2次元配列を使用する過程で、2次元配列に重複する値があるかどうかをどのように検出するかという問題に遭遇することがよくあります。この記事では、2次元配列に重複値があるかどうかを判断する方法を詳しく紹介します。

1. 2 次元配列とは何ですか?

2 次元配列に重複する値があるかどうかを判断する方法を紹介する前に、まず 2 次元配列とは何かを理解する必要があります。上で簡単に紹介したように、2 次元配列は 1 次元配列に別の次元を追加します。つまり、各要素は単一の値ではなく、配列になります。つまり、各要素は、文字列、数値、ブール値など、あらゆるタイプの複数の値を含む配列です。

次は、単純な 2 次元配列の例です:

$cars = array(
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);

この例では、4 つの配列要素を含む 2 次元配列 $cars を定義します。各要素には 3 つの値が含まれます。次のコードを通じて、$cars 配列の最初の要素の最初の値にアクセスできます:

echo $cars[0][0]; // 输出 Volvo

2. 2 次元配列

In に重複する値があるかどうかを確認します。実際の開発では、2 次元配列に重複する値があるかどうかを判断する必要があることがよくあります。この問題を解決するにはさまざまな方法がありますが、ここではそのうちの 2 つを紹介します。

1. foreach ループのネストを使用する

foreach ループのネストを使用して、2 次元配列内の各要素を走査し、それらの値を順番に比較します。具体的な実装手順は次のとおりです:

① 空の配列 $result を定義して、値が繰り返されない要素を保存します;

② foreach ループを使用して、元の 2 次元配列 $source と順番に取り出します 各要素;

③ 内側のループで再度 foreach ループを使用して $result 配列を走査し、現在の要素が $result 配列に既に保存されている各要素と同じかどうかを比較します;

④ それらが同じである場合は、内側のループから抜け出して次の要素のトラバースを続けます; 異なる場合は、現在の要素を $result 配列に保存してループを終了します。

具体的なコードは次のとおりです:

$source = array(  // 原始的二维数组
  array('name'=>'Tom','age'=>18),
  array('name'=>'Jack','age'=>23),
  array('name'=>'Mary','age'=>21),
  array('name'=>'Tom','age'=>20),
  array('name'=>'Jim','age'=>32)
);

$result = array();  // 存放没有重复值的元素

foreach ($source as $value) {
  $flag = true;  // 标记是否存在重复值
  foreach ($result as $v) {
    if ($value['name'] == $v['name']) {
      $flag = false;
      break;
    }
  }
  if ($flag) {
    $result[] = $value;
  }
}

print_r($result); // 输出结果:Array ( [0] => Array ( [name] => Tom [age] => 18 ) [1] => Array ( [name] => Jack [age] => 23 ) [2] => Array ( [name] => Mary [age] => 21 ) [4] => Array ( [name] => Jim [age] => 32 ) )

上記のコードでは、最初に空の配列 $result を定義し、次に 2 層の foreach ループを使用して元の 2 次元を走査します。配列 $source 。現在の要素の名前の値が既に $result 配列に存在することが判明した場合、現在のループを直接終了し、次の要素のトラバースを続行します。重複する値がない場合、現在の要素は$result 配列。

2. PHP の組み込み配列関数 array_unique を使用する

PHP には組み込み配列関数 array_unique があり、これを使用して配列内の重複する値を削除できます。この関数は非常に単純で、パラメータとして配列を渡すだけで、重複する値がすべて削除された新しい配列が返されます。 array_unique 関数を使用して 2 次元配列内の重複する値を削除する場合は、次のコードを使用できます。

$source = array(  // 原始的二维数组
  array('name'=>'Tom','age'=>18),
  array('name'=>'Jack','age'=>23),
  array('name'=>'Mary','age'=>21),
  array('name'=>'Tom','age'=>20),
  array('name'=>'Jim','age'=>32)
);

$name_arr = array_column($source, 'name');  // 获取所有name值的数组
$unique_arr = array_unique($name_arr);  // 去重
$result = array();  // 存放没有重复值的元素
foreach ($source as $value) {
  if (in_array($value['name'], $unique_arr)) {
    $result[] = $value;
  }
}
print_r($result); // 输出结果:Array ( [0] => Array ( [name] => Tom [age] => 18 ) [1] => Array ( [name] => Jack [age] => 23 ) [2] => Array ( [name] => Mary [age] => 21 ) [4] => Array ( [name] => Jim [age] => 32 ) )

上記のコードでは、最初に array_column 関数を使用して名前を取得します。すべての 2 次元配列内の値を取得し、array_unique 関数を使用して重複する値を削除します。次に、元の 2 次元配列を再度ループし、現在の要素の名前の値が $unique_arr に存在する場合は、現在の要素を $result 配列に保存します。

要約:

上記は、PHP の 2 次元配列に重複値があるかどうかを判断する 2 つの方法であり、これら 2 つの方法により、重複要素があるかどうかを迅速に判断できます。二次元配列で。このうち、PHP の組み込み関数 array_unique 関数を使用する方法は簡単ですが、より多くのコンピューティング リソースを消費します。一方、2 レベルの foreach ループのネストを使用する方法は、より柔軟で効率的です。開発者は、特定のニーズに基づいて、自分に合った方法を選択できます。

以上がPHPで2次元配列に重複値があるかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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