PHPの二次元配列から重複した値を削除する方法
PHP では、2 次元配列の重複排除が一般的な問題です。複数の次元を含む配列に対してデータ処理を実行する必要がある場合、特定の次元の値を統合する必要が生じることがあります。このとき、重複した値がある場合は、データの重複によって引き起こされる問題を回避するために重複を排除する必要があります。この記事では、PHP で 2 次元配列を重複排除する方法を紹介します。
方法 1: array_unique 関数を使用する
array_unique 関数を使用すると、配列内の重複する値を削除し、新しい配列を返すことができます。使用方法は非常に簡単で、重複排除された配列をこの関数に渡すだけです。
たとえば、このような 2 次元配列の場合:
$arr = array( array('name' => 'John', 'age' => 20), array('name' => 'Mary', 'age' => 25), array('name' => 'John', 'age' => 20), array('name' => 'Peter', 'age' => 22), array('name' => 'Mary', 'age' => 25) );
array_unique 関数を使用して重複を削除します:
$result = array_unique($arr, SORT_REGULAR); print_r($result);
出力結果は次のとおりです:
Array ( [0] => Array ( [name] => John [age] => 20 ) [1] => Array ( [name] => Mary [age] => 25 ) [3] => Array ( [name] => Peter [age] => 22 ) )
ご覧のとおり、重複した要素が削除されています。
array_unique はデフォルトで配列のすべての次元を重複排除することに注意してください。1 つの次元のみを重複排除したい場合は、特別な処理を実行する必要があります。
たとえば、名前ディメンションを通じて重複を削除するだけの場合は、次のメソッドを使用できます:
//遍历二维数组,将name作为键名 foreach($arr as $value){ $temp_arr[$value['name']] = $value; } //去重后,将数组重新按照数字索引重新排序 $temp_arr = array_values($temp_arr); print_r($temp_arr);
出力結果は次のとおりです:
Array ( [0] => Array ( [name] => John [age] => 20 ) [1] => Array ( [name] => Mary [age] => 25 ) [2] => Array ( [name] => Peter [age] => 22 ) )
参照してください。name をキー名として渡すと、name ディメンションのみを重複排除する効果が得られます。
方法 2: array_reduce 関数を使用する
一般的に使用されるもう 1 つの重複排除方法は、array_reduce 関数を使用することです。 array_reduce 関数は、配列内のすべての要素に対してリダクション操作を実行し、最終的にスカラー値を返すことができます。この関数を使用して、2 次元配列の重複を排除できます。
たとえば、このような 2 次元配列の場合:
$arr = array( array('name' => 'John', 'age' => 20), array('name' => 'Mary', 'age' => 25), array('name' => 'John', 'age' => 20), array('name' => 'Peter', 'age' => 22), array('name' => 'Mary', 'age' => 25) );
array_reduce 関数を使用して重複を削除します:
//定义一个回调函数,用于去重 function filter_duplicate($carry, $item){ if(!in_array($item, $carry)){ $carry[] = $item; } return $carry; } $result = array_reduce($arr, 'filter_duplicate', array()); print_r($result);
出力結果は次のとおりです:
Array ( [0] => Array ( [name] => John [age] => 20 ) [1] => Array ( [name] => Mary [age] => 25 ) [3] => Array ( [name] => Peter [age] => 22 ) )
ご覧のとおり、重複した要素が削除されています。
array_reduce 関数は配列のすべての次元も重複排除することに注意してください。次元の 1 つだけを重複排除したい場合は、array_unique 関数を使用する場合と同様の特別な処理を実行する必要があります。
方法 3: ループ トラバーサルを使用する
もう 1 つの一般的な重複排除方法は、ループ トラバーサルを使用することです。この方法は複雑になりますが、PHPの配列関連の機能を駆使することで柔軟な重複排除処理を実現できます。ループ内で in_array 関数を使用するか、各要素をハッシュすることで、重複した要素を除外できます。
たとえば、このような 2 次元配列の場合:
$arr = array( array('name' => 'John', 'age' => 20), array('name' => 'Mary', 'age' => 25), array('name' => 'John', 'age' => 20), array('name' => 'Peter', 'age' => 22), array('name' => 'Mary', 'age' => 25) );
次のコードを使用して重複を削除できます:
$new_arr = array(); foreach($arr as $value){ $hash = md5(serialize($value)); //计算一个哈希值 if(!isset($new_arr[$hash])){ $new_arr[$hash] = $value; //新元素加入新数组 } } $new_arr = array_values($new_arr); //将新数组重新按照数字索引重新排序 print_r($new_arr);
出力結果は次のとおりです:
Array ( [0] => Array ( [name] => John [age] => 20 ) [1] => Array ( [name] => Mary [age] => 25 ) [2] => Array ( [name] => Peter [age] => 22 ) )
Yes ご覧のとおり、重複した要素が削除され、新しい配列が数値インデックスに従って並べ替えられています。
要約:
上記は一般的な 3 つの重複排除方法ですが、それぞれの方法には長所と短所があり、実際の状況に応じて適切な方法を選択する必要があります。 2 次元配列を処理する場合は、「シンプルかつ効率的」の原則に従い、PHP が提供する配列関連の関数を可能な限り使用して、コードの複雑さと操作効率を軽減し、プログラムのパフォーマンスを向上させる必要があります。
以上がPHPの二次元配列から重複した値を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8のJITコンピレーションは、頻繁に実行されるコードをマシンコードにコンパイルし、重い計算でアプリケーションに利益をもたらし、実行時間を短縮することにより、パフォーマンスを向上させます。

この記事では、PHPの対称的および非対称暗号化について説明し、適合性、パフォーマンス、セキュリティの違いを比較しています。対称暗号化はより速く、バルクデータに適していますが、非対称は安全なキー交換に使用されます。

この記事では、不正アクセスを防ぎ、ベストプラクティスの詳細、セキュリティ強化ツールの推奨を防ぐために、PHPで堅牢な認証と承認の実装について説明します。

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

記事では、PHPを使用してデータベースからデータを取得し、手順、セキュリティ対策、最適化手法、およびソリューションを使用した一般的なエラーをカバーしています。

この記事では、CSRFトークン、同じサイトCookie、適切なセッション管理など、PHPでのCSRF攻撃を防ぐための戦略について説明します。

この記事では、mysqlデータベースインタラクションのphpでmysqli_query()およびmysqli_fetch_assoc()関数について説明します。それは彼らの役割、違いを説明し、それらの使用の実用的な例を提供します。主な議論は、USINの利点に焦点を当てています

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。
