💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
| 一维数组去重 | | | --- | --- | ``` 方法一: 注释:去掉一维数组中重复的值,通过交换键值来去重 * [array_flip(array)] [交换数组中的键和值] * @param [array] [需要去重的一维数组] * @return [返回去重后的数组] * Example $array = array('green','blue','orange','blue'); $array = array_flip($array); #反转数组,重复的键名后面的将覆盖前面 array('green'=>0,'blue'=>1,'orange'=>2); $array = array_flip($array); #然后再反转回正常的一维数组 输出: Array ( [0] => green [3] => blue [2] => orange ) 方法二: 注释:去掉一维数组中重复的值,速度较慢 * [array_unique(array, sort_flags)] [移除数组中重复的值] * @param [array] [需要去重的一维数组] * @param [sort_flags] [可选参数,SORT_REGULAR|SORT_NUMERIC|SORT_STRING|SORT_LOCALE_STRING,好像是与排序相关] * @return [返回去重后的数组,失败返回 NULL] * Example $input = array("a" => "green", "red", "b" => "green", "blue", "red"); $result = array_unique($input); 输出: Array ( [a] => green [0] => red [1] => blue ) ``` | 二维数组去重 | | | --- | --- | ``` 场景一:二维数组里面的一维数组某一键名值不能重复,删除重复项 /** * [assoc_unique 二维数组去重] * @param [type] $arr [需要去重的二维数组] * @param [type] $key [根据哪个键名来去重] * @return [type] [返回去重后的数组,后面重复的将会删除] */ function assoc_unique($arr, $key){ $tmp_arr = array(); foreach($arr as $k => $v){ if(in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true unset($arr[$k]); }else { $tmp_arr[] = $v[$key]; } } sort($arr); //sort函数对数组进行排序 return $arr; } #Example $array = array( array('id' => 123, 'name' => '张三'), array('id' => 123, 'name' => '李四'), array('id' => 124, 'name' => '王五'), array('id' => 123, 'name' => '李四'), array('id' => 126, 'name' => '赵六') ); assoc_unique($array, 'id') #输出 Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 126 [name] => 赵六 ) ) 场景二:去掉二维数组中存在重复的一维数组(数组中的值需要完成不同),删除重复项 /** * [array_unique 二维数组去重] * @param [type] $arr [需要去重的二维数组] * @return [type] [description] */ function array_unique($arr){ $temp = []; foreach ($arr as $v){ $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组 foreach ($temp as $k => $v){ $temp[$k] = explode(",",$v); //再将拆开的数组重新组装 } return $temp; } #Example $array = array( array('id' => 123, 'name' => '张三'), array('id' => 123, 'name' => '李四'), array('id' => 124, 'name' => '王五'), array('id' => 123, 'name' => '李四'), array('id' => 126, 'name' => '赵六') ); assoc_unique($array) #输出 Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) ) ``` | php.cn网站资源 | 数组去重 | | --- | --- | ### ** PHP使用array\_unique对二维数组去重处理** array\_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array\_unique对二维数组去重处理例子。 php 5.2.9 版本增加了array\_unique对多维数组的支持,在处理多维数组是需要设置sort\_flags参数 一维数组的重复项: 使用array\_unique函数即可,使用实例如下: 代码如下 复制代码 ``` <?php $aa = array("apple", "banana", "pear", "apple", "wail", "watermalon"); $bb = array_unique($aa); print_r($bb); ``` 结果如下: ``` Array ( [0] = apple [1] = banana [2] = pear [4] = wail [5] =watermalon ) 。 ``` 二维数组去重项 代码如下 复制代码 例如: ``` $result = array( 0=>array('a'=>1,'b'=>'Hello'), 1=>array('a'=>1,'b'=>'other'), 2=>array('a'=>1,'b'=>'other'), ); ``` 处理成 ``` $result = array( 0=>array('a'=>1,'b'=>'Hello'), 1=>array('a'=>1,'b'=>'other') ); ``` 使用方法 ``` array_unique($result, SORT_REGULAR); ``` 二维数组的重复项: 对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明: ㈠因为某一键名的值不能重复,删除重复项 PHP 代码如下 复制代码 ``` function assoc_unique($arr, $key) { $tmp_arr = array(); foreach ($arr as $k => $v) { if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true unset($arr[$k]); } else { $tmp_arr[] = $v[$key]; } } sort($arr); //sort函数对数组进行排序 return $arr; } $aa = array( array('id' => 123, 'name' => '张三'), array('id' => 123, 'name' => '李四'), array('id' => 124, 'name' => '王五'), array('id' => 125, 'name' => '赵六'), array('id' => 126, 'name' => '赵六') ); $key = 'id'; assoc_unique(&$aa, $key); print_r($aa); ``` 显示结果为: ``` Array ( \[0\] => Array ( \[id\] => 123 \[name\] => 张三 ) \[1\] => Array ( \[id\] => 124 \[name\] => 王五 ) \[2\] => Array ( \[id\] => 125 \[name\] => 赵六 ) \[3\] => Array ( \[id\] => 126 \[name\] => 赵六 ) ) ``` ㈡因内部的一维数组不能完全相同,而删除重复项 代码如下 复制代码 ``` function array_unique_fb($array2D) { foreach ($array2D as $v) { $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $temp = array_unique($temp);//去掉重复的字符串,也就是重复的一维数组 foreach ($temp as $k => $v) { $temp[$k] = explode(",", $v);//再将拆开的数组重新组装 } return $temp; } $aa = array( array('id' => 123, 'name' => '张三'), array('id' => 123, 'name' => '李四'), array('id' => 124, 'name' => '王五'), array('id' => 123, 'name' => '李四'), array('id' => 126, 'name' => '赵六') ); $bb = array_unique_fb($aa); print_r($bb) ``` 显示结果: ``` Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) ) ```