php将多个值的数组去除重复元素

function more_array_unique($arr=array()){  
    foreach($arr[0] as $k => $v){  
        $arr_inner_key[]= $k;   //先把二维数组中的内层数组的键值记录在在一维数组中  
    }  
    foreach ($arr as $k => $v){  
        $v =join(",",$v);    //降维 用implode()也行  
        $temp[$k] =$v;      //保留原来的键值 $temp[]即为不保留原来键值  
    }  
    $temp =array_unique($temp);    //去重:去掉重复的字符串  
    foreach ($temp as $k => $v){  
        $a = explode(",",$v);   //拆分后的重组 如:Array( [0] => james [1] => 30 )  
        $arr_after[$k]= array_combine($arr_inner_key,$a);  //将原来的键与值重新合并  
    }  
    return $arr_after;  
}  
$a = array(1, 3, 5);
echo count($a); //3
echo count(null); //0
echo count(false); //1
echo count(0); //1
echo count('abc'); //1

 

差集,返回第一个数组中与其他数组元素都不相同的元素(根据value值来判断,不根据key值),元素的健值保留

<?php
 $arr = array(  
          '0'=>array(  
                   'name'=>'james',  
                   'age'=>30,  
                   ),  
          '1'=>array(  
                   'name'=>'susu',  
                   'age'=>26,  
                   ),  
           '2'=>array(  
                   'name'=>'james',  
                   'age'=>30,  
                   ),  
           'new'=>array(  
                   'name'=>'kube',  
                   'age'=>37,  
                   ),  
           'list'=>array(  
                   'name'=>'kube',  
                   'age'=>27,  
                   ),  
           '435'=>array(  
                   'name'=>'susu',  
                   'age'=>26,  
                   ),
            '33'=>array(  
                   'name'=>'james',  
                   'age'=>30,  
                   ), 
           );  
printf("原来的数组:<br><pre>");   //输出原来的数组  
print_r($arr);  
echo "</pre><br/>";   



function more_array_unique($arr=array()){  
    foreach($arr[0] as $k => $v){  
        $arr_inner_key[]= $k;   //先把二维数组中的内层数组的键值记录在在一维数组中  
    }  
    foreach ($arr as $k => $v){  
        $v =join(",",$v);    //降维 用implode()也行  
        $temp[$k] =$v;      //保留原来的键值 $temp[]即为不保留原来键值  
    }  
    $temp =array_unique($temp);    //去重:去掉重复的字符串  
    foreach ($temp as $k => $v){  
        $a = explode(",",$v);   //拆分后的重组 如:Array( [0] => james [1] => 30 )  
        $arr_after[$k]= array_combine($arr_inner_key,$a);  //将原来的键与值重新合并  
    }  
    return $arr_after;  
}  



    $arr_new = more_array_unique($arr);  //调用去重函数  
    printf("去除重复元素后的数组:<br>");  

    echo '<pre>';
    print_r($arr_new);  
    echo "</pre><br/>";  
?>

取出数组的部分数据,第二个参数可以为负数,第四个参数为TRUE是保留健值

调用函数后显示:

*3. array_merge(array1,array2,array3...)*

 

$a1 = array('a' => 'red', 'b' => 'green', 'c' => 'blue', 'd' => 'yellow');
$a2 = array('e' => 'red', 'f' => 'green', 'g' => 'blue');

$result = array_diff($a1, $a2);
print_r($result);
/*
Array
(
    [d] => yellow
)
*/
Array
(
    [0] => Array
        (
            [name] => james
            [age] => 30
        )

    [1] => Array
        (
            [name] => susu
            [age] => 26
        )

    [new] => Array
        (
            [name] => kube
            [age] => 37
        )

    [list] => Array
        (
            [name] => kube
            [age] => 27
        )

)

*13. array_sum(array)*

 

  • 移除数组中的重复的值,并返回结果数组,
  • 金沙官网线上,根据value值判断,不管key
  • 保留第一个元素,舍弃其他相同的元素

array_unique(array) 只能处理value只有单个的数组。

数组元素反转,如果第二个参数为TRUE,则保留原来的健值

测试Demo如下:

通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值

注意:两个参数必须有相同数目的元素

有如下数组:

*7. array_values(array),in_array(search,array,type)*

 $arr = array(  
          '0'=>array(  
                   'name'=>'james',  
                   'age'=>30,  
                   ),  
          '1'=>array(  
                   'name'=>'susu',  
                   'age'=>26,  
                   ),  
           '2'=>array(  
                   'name'=>'james',  
                   'age'=>30,  
                   ),  
           'new'=>array(  
                   'name'=>'kube',  
                   'age'=>37,  
                   ),  
           'list'=>array(  
                   'name'=>'kube',  
                   'age'=>27,  
                   ),  
           '435'=>array(  
                   'name'=>'susu',  
                   'age'=>26,  
                   ),
            '33'=>array(  
                   'name'=>'james',  
                   'age'=>30,  
                   ), 
           ); 

19. sort,rsort,ksort,krsort

去除有多个value数组,可以使用如下函数实现:

17. end

函数把一个或多个数组合并为一个数组。

提示:我这里就不做相同健值是否覆盖的区分了,太难记了

前者获取数组的所有value值,组成一个新的数组
后者判断某值是否在数组中value值中,如果第三个参数设置为TRUE,则还要比较类型是否相等

*15. array_unshift(array,value1,value2,value3...)*

返回数组所有值之和

如果所有值都是整数,则返回一个整数值。如果其中有一个或多个值是浮点数,则返回浮点数。

前者获取数组的所有key值,组成一个新的数组
后者判断某值是否在数组中的key值中

$arr = array(
  array(
    'id' => 5698,
    'name' => 'Gates',
  ),
  array(
    'id' => 4767,
    'name' => 'Jobs',
  )
);

$names = array_column($arr, 'last_name');
print_r(names);
/*
Array
(
  [0] => Gates
  [1] => Jobs
)
*/

$names = array_column($arr, 'last_name', 'id');
print_r(names);
/*
Array
(
  [5698] => Gates
  [4767] => Jobs
  [3809] => Zuckerberg
)
*/
$a1 = array('red', 'green');
$a2 = array('blue', 'yellow');
print_r(array_merge($a1, $a2));

/*
Array
(
    [0] => red
    [1] => green
    [2] => blue
    [3] => yellow
)
*/

*11. array_reverse(array, preserve) *

18. list

*1. array_column(array,column_key[,index_key]);*

本文由金沙官网线上发布于编程,转载请注明出处:php将多个值的数组去除重复元素

您可能还会对下面的文章感兴趣: