PHPで配列から重複を削除する方法(関数を使用せず)

PHPz
リリース: 2023-04-26 10:03:55
オリジナル
483 人が閲覧しました

PHP 開発では、配列の重複を排除する必要があるシナリオによく遭遇します。通常、array_unique 関数を使用してこれを実現できます。しかし、関数を使用せずに配列の重複排除を実現するにはどうすればよいでしょうか?この記事では、ループを使用して配列の重複排除を実現する方法を紹介します。

方法 1: ループを使用して配列重複排除を実装する

具体的な実装プロセスは次のとおりです:

<?php
//定义测试数组
$arr = array(1,2,3,2,1,4,5,4,6);
$count = count($arr);
//循环遍历数组
for ($i=0; $i<$count; $i++) {
 //从第i个元素之后循环判断是否有相同值
 for ($j=$i+1; $j<$count; $j++) {
  //如果有相同值,则删除当前元素
  if ($arr[$i] == $arr[$j]) {
   array_splice($arr, $j, 1); //使用array_splice函数删除元素
   //因为删除元素后,数组长度发生了变化,需要重新计算数组长度
   $count = count($arr);
   $j--; //指针向前移动,避免遗漏元素
  }
 }
}
//打印去重后的数组
print_r($arr);
?>
ログイン後にコピー

上記のコードでは、for ループを使用して配列を走査します。を要素ごとに調べ、for ループを使用してこの要素の後の要素をたどって、それらの要素が同じ値を持つかどうかを判断します。存在する場合は、array_splice 関数を使用して重複する要素を削除し、配列の長さとポインターの位置を再計算して要素の欠落を回避します。

方法 2: コア関数を使用して配列重複排除を実装する

ループ メソッドの使用に加えて、PHP コア関数を使用して配列重複排除を実装することもできます。具体的な実装プロセスは次のとおりです。

<?php
//定义测试数组
$arr = array(1,2,3,2,1,4,5,4,6);
//使用array_keys函数获取数组中每个元素的键值
$keys = array_keys($arr);
//使用array_values函数获取数组中每个元素的值
$values = array_values($arr);
//使用array_unique函数对values数组进行去重
$values = array_unique($values);
//使用array_combine函数将keys数组和去重后的values数组重新组成一个数组
$arr = array_combine($keys, $values);
//打印去重后的数组
print_r($arr);
?>
ログイン後にコピー

上記のコードでは、まず array_keys 関数と array_values 関数を使用して配列内の各要素のキーと値をそれぞれ取得し、array_unique 関数を使用して値配列の重複を除去してから、array_combine 関数を使用して、キー配列と重複除去された値配列を新しい配列に再編成します。この方法は比較的単純ですが、要素が多い場合、メモリ使用量が高くなり、ループ方法ほどパフォーマンスが良くない可能性があります。

概要:

配列の重複排除は、PHP 開発でよく遭遇する問題であり、ループまたはコア関数を使用して実現できます。ループ方式を使用すると時間がかかる場合がありますが、メモリの使用量が少なく、要素数が少ない配列に適しています。コア関数メソッドを使用すると、要素値が新しい配列に再編成され、より多くのメモリを消費しますが、重複排除操作をより迅速に完了でき、多数の要素を持つ配列に適​​しています。

以上がPHPで配列から重複を削除する方法(関数を使用せず)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート