php删除二维数组中某些值重复的数据

PHP 1394浏览 评论

今天小伙伴出去面试,问了一个题目,就帮忙写了下。

有点助纣为虐的感觉啊!原谅我是个好心人!

题目是有这样一个数组:

<?php
 $arr = [
     ['name' => '张三','phone' => '123456','time' => "11"]
     ['name' => '李四','phone' => '345678','time' => "22"]
     ['name' => '张三','phone' => '123456','time' => "33"]
     ['name' => '张三','phone' => '123456','time' => "33"]
     ['name' => '小王','phone' => '345689','time' => "44"]
 ];

?>

要求是:把上述数组中name+phone重复的只保留一条,也就是去重。

大概看了下题目,发现php貌似没有这么一个函数直接能够处理。

预想的结果是:张三,李四,小王....

只有array_unique()稍微接近,这个函数可以去掉所有值都一样的数据,这个题目明显时间不一样,所以要自己写一个了。

下面直接上代码:

第一种方法

<?php
for($i=0;$i<count($arr)-1;$i++){
    $source = $arr[$i];
    foreach($arr as $k=>$v){
        if($source['name'] == $v['name'] && $source['phone'] == $v['phone'] && $k!= $i){
            unset($arr[$k]);
        }
    }
}
var_dump($arr);

?>

第二种方法:递归

<?php 
function arr($arr){
    foreach($arr as $k=>$v){
        if($arr[0]['name'] == $v['name'] && $arr[0]['phone'] == $v['phone'] && $k!=0){
            unset($arr[$k]);
            arr($arr);
        }
    }
    return $arr;
}

arr($arr);
?>


看下效果2种方法的打印效果图

IMG_0497.PNG

本文连接:http://www.phpbloger.com/article/41.html 文章都为原创,转载请注明出处!

相关文章