php二维数组去除重复值
Posted ovsexia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php二维数组去除重复值相关的知识,希望对你有一定的参考价值。
<?php //二维数组 $test["aa"] = array("id"=>"17","name"=>"汽车"); $test["bb"] = array("id"=>"18","name"=>"飞机"); $test["cc"] = array("id"=>"19","name"=>"高铁"); $test["dd"] = array("id"=>"19","name"=>"飞机"); //去除二维数组重复值,默认重复保留前面的值 /* *array 二维数组 *keyid 需要判断是否重复的项目 *desc 为true时保留后面的 */ function array_repeat($array,$keyid="id",$desc=false) { $array = array_values($array); //倒叙排列数 if($desc) { $array = array_rsort($array,true); } //提取需要判断的项目变成一维数组 $a = array_tq($array,$keyid); //去除一维数组重复值 $a = array_unique($a); //提取二维数组项目值 foreach($array[0] AS $key=>$value) { $akey[] = $key; } //重新拼接二维数组 foreach($akey AS $key=>$value) { $b = array_tq($array,$value); foreach($a AS $key2=>$value2) { $c[$key2][$value] = $b[$key2]; } } if($desc) { $c = array_rsort($c,true); } return $c; } //数组倒叙 function array_rsort($arr,$isvalues=false) { if(is_array($arr)){ $flag = false; //一维数组 if(count($arr) == count($arr,1)){ $flag = true; $i = 0; //转换成二维数组 foreach($arr AS $key=>$value){ $a[$i]["okey"] = $key; $a[$i]["value"] = $value; $i++; } $arr = $a; } //多维数组 else { //添加临时key值 foreach($arr AS $key=>$value){ $value["okey"] = $key; $array[] = $value; } $arr = $array; } //倒叙并还原key值 $count = count($arr)-1; for($i=0;$i<count($arr);$i++){ $b[$arr[$count]["okey"]] = $arr[$count]; $count--; } //重构一维数组 if($flag == true){ foreach($b AS $key=>$value){ if($isvalues){ $c[] = $value["value"]; }else{ $c[$value["okey"]] = $value["value"]; } } } //多维数组去除临时key值 else { foreach($b AS $key=>$value) { unset($value["okey"]); if($isvalues){ $c[] = $value; }else{ $c[$key] = $value; } } } return $c; } } //提取二维数组项目 function array_tq($array,$aval="") { foreach($array AS $key=>$value) { $result[] = $value[$aval]; } return $result; } //去除id相同的项 var_dump(array_repeat($test,"id")); var_dump(array_repeat($test,"id",true)); echo "----------------------------------------"; //去除name相同的项 var_dump(array_repeat($test,"name")); var_dump(array_repeat($test,"name",true)); ?>
以上是关于php二维数组去除重复值的主要内容,如果未能解决你的问题,请参考以下文章