php二维数组去除重复值

<?php
$test[0] = array(
‘id‘ => ‘17‘,
‘name‘ => "儿童",
‘ra‘ => "456"
);
$test[1] = array(
‘id‘ => ‘17‘,
‘name‘ => "sad儿童",
‘ra‘ => "789"
);
$test[2] = array(
‘id‘ => ‘16‘,
‘name‘ => "撒的",
‘ra‘ => "235"
);
$test[3] = array(
‘id‘ => ‘19‘,
‘name‘ => "女",
‘ra‘ => "235"
);

//print_r($test);

//去除二维数组重复值,默认重复保留前面的值
/*
*array 二维数组
*keyid 需要判断是否重复的项目
*desc 为true时保留后面的
*/
function array_repeat($array,$keyid="id",$desc=false)
{
$array = array_values($array);
//倒叙排列数
if($desc)
{
$array = array_rsort($array);
}

//提取需要判断的项目变成一维数组
$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);
}
return $c;
}

//数组倒叙
function array_rsort($arr)
{
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
{
foreach($arr AS $key=>$value)
{
$value["okey"] = $key;
$array[] = $value;
}
$arr = $array;
}

//倒叙并还原key值
$aa = count($arr)-1;
for($i=0;$i<count($arr);$i++)
{
$b[$arr[$aa]["okey"]] = $arr[$aa];
$aa--;
}

//重构一维数组
if($flag == true)
{
foreach($b AS $key=>$value)
{
$c[$value["okey"]] = $value["value"];
}
}
//多维数组去除临时key值
else
{
foreach($b AS $key=>$value)
{
unset($value["okey"]);
$c[$key] = $value;
}
$c = $b;
}
return $c;
}
}

//提取二维数组项目
function array_tq($array,$aval="")
{
foreach($array AS $key=>$value)
{
$result[] = $value[$aval];
}
return $result;
}

$test = array_repeat($test,"id");

print_r($test);
?>

原文地址:https://www.cnblogs.com/ovsexia/p/10630170.html

时间: 2024-08-04 18:17:43

php二维数组去除重复值的相关文章

二维数组去除重复值和array_unique函数

今天遇到了一个问题,就是从数据库中去除的数组为一个二维数组,现在就是想将二位数组进行去重,但是在php中,对于一个一维数组,我们可以直接使用php的系统函数array_unique,但是这个函数不能对多维数组进行去除重复,因此我需要自己写一个去除二维数组重复值的函数. 1 function array_unique_fb($array2D){ 2 3 foreach ($array2D as $v){ 4 $v=join(',',$v);//降维,也可以用implode,将一维数组转换为用逗号连

PHP二维数组去除重复,重复值相加

$arr = array( array('id' => 122, 'name' => '张三', 'amount' => '1'), array('id' => 123, 'name' => '李四', 'amount' => '1'), array('id' => 124, 'name' => '王五', 'amount' => '1'), array('id' => 125, 'name' => '赵六', 'amount' =>

二维数组去除特定键的重复项

<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { //原始数据 /*Array ( [0] => Array ( [ap] => 23 [ac] => 569418 ) [1] => Array ( [ap] => 23 [ac] => 569520 ) [2] => Array ( [ap] => 23 [ac] => 569533 ) )*/ //除去重复值后的数据 /*

PHP 按二维数组的键值排序

/** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升序/降序 * @return multitype:unknown 返回排序后的数组 */ public static function arr_sort_in_key($array, $key, $order = "asc") { $arr_nums = $arr = array(); f

php二维数组的取值与转换

1 while(list($key,$value) = each($arr)) 2 { 3 while(list($k,$v) = each($value)) 4 { 5 echo $key."==>".$k."===>".$v."<br>"; 6 } 7 } 1 $msg = array( 2 array( 3 'id'=>'45s', 4 'name'=>'jacks' 5 ), 6 array( 7 'i

使用一个for循环将N*N的二维数组的所有值置1

<?php // 使用一个for循环将N*N的二维数组的所有值置1 $n = 3; $a = []; for($i=0;$i<$n*$n;$i++){ $a[$i/$n][$i%$n] = 1; } print_r($a);

PHP获取二维数组指定字段值的和

array_sum(array_column($arr, 'num')); //获取二维数组 num字段的和 $arr = [ [ 'device_uid' => '123456', 'num' => '5', ], [ 'device_uid' => '123457', 'num' => '2', ], [ 'device_uid' => '123458', 'num' => '4', ], ]; echo '<pre>'; //先对二维数组进行处理,再对

PHP如何去掉多维数组的重复值

1.定义函数 function array_unique_new($arr){ $t = array_map('serialize', $arr);//利用serialize()方法将数组转换为以字符串形式的一维数组 $t = array_unique($t);//去掉重复值 $new_arr = array_map('unserialize', $t);//然后将刚组建的一维数组转回为php值 return $new_arr; } 2.定义数组 $arr = array(array('sup_

二维数组追加键值对

1 $wid=$this->_post('order_id'); 2 if(!$wid){ 3 echo('工单信息获取失败!'); 4 exit; 5 } 6 $where=null; 7 $where['A.wid']=$wid; 8 $list=M('kefu_reply')->alias("A")->join('z_user_common as B on A.uid=B.id')-> 9 where($where)->field('A.*,B.re