PHP プログラミングを使用する場合、多くの場合、2 次元配列の操作が必要になります。場合によっては、2 次元配列の重複排除、つまり重複した項目を削除する必要があります。この記事では、PHP で 2 次元配列を重複排除する方法を紹介します。
1. array_unique 関数を使用する
array_unique 関数は、配列内の重複した値を削除し、重複した値のない新しい配列を返すことができます。ただし、array_unique 関数を直接使用して 2 次元配列を重複排除することはできません。
array_walk 関数を使用して配列を走査し、各要素内で array_unique 関数を使用して重複を削除できます。サンプル コードは次のとおりです。
function array_unique_key($arr,$key){ $tmp_arr=array(); foreach($arr as $k => $v){ if(in_array($v[$key],$tmp_arr)){ //判断是否重复 unset($arr[$k]); //重复则删除 }else{ $tmp_arr[]=$v[$key]; //将值存储在临时数组中 } } return $arr; }
上記のコードでは、$arr は重複排除が必要な 2 次元配列、$key は指定されたキー名 (つまり、重複排除される要素)、関数は重複排除後の新しい配列を返します。
2.カスタム関数
を使用して、重複排除ロジックを自分で実装します。次のコード例では、ループを使用して重複排除を実装しています。
function array_unique_key($arr,$key){ $temp_array = array(); foreach ($arr as $k => $v){ if (!in_array($v[$key], $temp_array)){ array_push($temp_array, $v[$key]); $temp_arr[] = $v; } } return $temp_arr; }
上記のコードでは、$arr は重複排除する必要がある 2 次元配列で、$key は指定されたキー名 (つまり、要素) です。重複排除キー名に対応する)、この関数は重複排除後の新しい配列を返します。
3. array_reduce 関数を使用する
array_reduce 関数は、配列の各要素を反復処理して、縮小された単一の値を返すことができます。
この関数を使用して、2 次元配列の重複排除を実現できます。
コードは次のとおりです:
function array_unique_key($arr,$key){ return array_reduce($arr, function($carry, $item) use ($key) { if(!in_array($item[$key], array_column($carry, $key))) { $carry[] = $item; } return $carry; }, []); }
上記のコードでは、$arr は重複排除する必要がある 2 次元配列で、$key は指定されたキー名 (つまり、重複排除する要素に対応するキー名))、この関数は重複排除後の新しい配列を返します。
4. カスタム関数を PHP の組み込み関数と組み合わせて使用する
次のコードは、PHP の組み込み関数 array_map、array_flip、および array_values を組み合わせて、2 次元配列を重複排除する関数を実装します。
function array_unique_key($arr,$key){ return array_values(array_flip(array_map(function($item) use($key){ return json_encode($item[$key]); }, $arr))); }
上記のコードでは、$arr は重複排除する必要がある 2 次元配列で、$key は指定されたキー名 (つまり、要素に対応するキー名) です。この関数は、重複排除後の新しい値を返します。
まとめ
以上は、PHP で 2 次元配列を重複排除するためのいくつかの方法であり、array_unique、カスタム関数を使用する方法、および PHP 組み込み関数の array_map、array_flip、および Array_flip を組み合わせる方法を大まかに紹介しています。 array_reduce。アプリケーションシナリオが異なれば使用する方法も異なり、プログラマは特定の状況に応じて選択できます。
以上がPHP で 2 次元配列から重複を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。