php输出数组中重名元素的几种方法

php中文网
发布: 2016-07-25 08:59:50
原创
1541人浏览过
为大家介绍几个php输出数组中的重名元素的方法,有需要的朋友,可以参考下。

方法1、直接用php的内置函数array_intersect() array array_intersect ( array $array1 , array $array2 [, array $ ... ] ) array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。 例子:

<?php  
    $array1 = array("a" => "green", "red", "blue");  
    $array2 = array("b" => "green", "yellow", "red");  
    $result = array_intersect($array1, $array2);  
?>
登录后复制

输出结果: Array( [a] => green [0] => red)

方法2、自己实现的算法

<?php  
    function my_array_same($a){  
            $b = array_unique($a);  
            $r = array_diff_key($a,$b);  
            echo "<pre class="brush:php;toolbar:false;">";  
            $k=var_dump(array_unique($r));  
            return $k;        
            }  
    $a = array("red", "green", "pink",  "red", "yellow","pink", "red");  
    $r=my_array_same($a);  
    var_dump(array_unique($r));  
?>
登录后复制

输出结果: array(2) { [3]=> string(3) "red" [5]=> string(4) "pink" }

3、自定义递归函数

SEEK.ai
SEEK.ai

AI驱动的智能数据解决方案,询问您的任何数据并立即获得答案

SEEK.ai 128
查看详情 SEEK.ai
<?php  
    function my_array_intersect($arr1,$arr2){      
        for($i=0;$i<count($arr1);$i++){          
            $temp[]=$arr1[$i];      
            }   
        for($i=0;$i<count($arr1);$i++){          
            $temp[]=$arr2[$i];      
            }   
         sort($temp);   
         $get=array();          
         for($i=0;$i<count($temp);$i++){          
            if($temp[$i]==$temp[$i+1])           
               $get[]=$temp[$i];      
             }          
         return $get;  
      }  
    $array1 = array("green", "red", "blue");  
    $array2 = array("green", "yellow", "red");  
    echo "<pre class="brush:php;toolbar:false;">";  
    print_r(my_array_intersect($array1, $array2));  
    echo "<pre class="brush:php;toolbar:false;"/>";  
?>
登录后复制

说明: 一维数组的话,第三种算法比第一种快点。 上述算法都适用于一维的数组,那么多维数组怎么查找相同的元素呢? 这里提供一种思路:可以把多维的数组转化成一维的数组,然后再利用上述算法输出。 例子:

<?php
    function toarr($arr){ //对数组进行递归,以字符串形式返回  
        foreach ($arr as $k=>$v){  
             if (!is_array($v)) {  
                $str.=$v." ";  
             }  
             else{  
                $str.=toarr($v);  
             }  
        }     
      return $str;  
    }/*递归函数结束*/  
?>
登录后复制

以上代码实现多维数组转化成字符串,然后使用expode函数转化成一维数组即可。 试想一下,数据库返回某一字段重名的值也是这个道理,这个通过sql语句也是可以实现的。

编程就是这样,条条大道通罗马,举一返三,触类而旁通,多学多练多实践,功到自然成啊。 程序员之家,祝大家学习进步。



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号