PHP では配列を扱う必要がよくありますが、よくある問題の 1 つは、2 次元配列内の重複値を削除する方法です。この問題を解決するのは難しいことではなく、array_map
、array_unique
、array_filter
など、PHP が提供するいくつかの配列関数を使用できます。次に、2次元配列から重複した値を削除する方法を見てみましょう。
2 次元配列とは、配列内の要素も配列であることを意味し、行列として表現できます。 PHP では、次のメソッドを使用して 2 次元配列を作成できます。
$students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18) );
上記のコードでは、$students
配列を作成します。ここで、各要素は配列でもあり、次の内容が含まれます。 name
と age
は 2 つのキーと値のペアです。この配列は、学生情報のテーブルとして理解できます。
次に、2 次元配列から重複値を削除するいくつかの方法を紹介します。
function remove_duplicate_by_foreach($arr){ $result = array();//定义一个新数组,用来存放去重后的数据 foreach($arr as $key => $value){ $flag = false; foreach($result as $val){ if($value == $val){ $flag = true; break; } } if(!$flag){ //如果数据不重复,则将其添加到新数组中 array_push($result, $value); } } return $result; } $students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18), array('name' => '张三', 'age' => 18) ); print_r(remove_duplicate_by_foreach($students));
上記のコードでは、最初に空の $result
配列を定義し、次に 2 つの foreach ループを使用して元の配列 $arr
を要素ごとに走査します。 it$value
は、$result
配列内で同じ要素を検索します。見つからない場合は、その要素を $result
配列に追加します。
この方法は比較的シンプルで理解しやすいですが、効率は比較的低く、特にデータが多い場合、走査時間が非常に長くなります。
function remove_duplicate_by_array_map($arr){ $temp = array_map("serialize", $arr);//将数组中的每个元素都序列化 $result = array_unique($temp);//去重操作 $new_array = array(); foreach ($result as $value) {//反序列化操作 array_push($new_array, unserialize($value)); } return $new_array; } $students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18), array('name' => '张三', 'age' => 18) ); print_r(remove_duplicate_by_array_map($students));
上記のコードでは、まず array_map
関数を使用して、元の配列 $arr## を変換します。 # 各要素は文字列にシリアル化され、
array_unique 関数を使用してシリアル化された文字列の重複が除去され、最後に foreach ループを使用して通常の配列要素に逆シリアル化されます。
function remove_duplicate_by_array_filter($arr){ $unique_arr = array_unique(array_map('serialize',$arr));//先将数组序列化再去重 return array_filter($unique_arr, function($var){//回调函数进行反序列化 return unserialize($var); }); } $students = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), array('name' => '赵六', 'age' => 18), array('name' => '张三', 'age' => 18) ); print_r(remove_duplicate_by_array_filter($students));
array_map 関数を使用して、元の配列
$arr の各要素をフィルターします。 要素はすべて文字列にシリアル化され、その後、
array_unique 関数を使用してシリアル化された文字列の重複が排除され、最後に
array_filter 関数を使用して逆シリアル化操作が実装されます。
array_map、
array_unique を使用できます。 、
Array_filter などの関数が実装されています。より効率的な処理結果を得るには、必要に応じてさまざまな方法を選択してください。
以上がPHPで2次元配列から重複した値を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。