> 백엔드 개발 > PHP 튜토리얼 > PHP가 배열에 중복된 이름을 가진 요소를 출력하는 여러 가지 방법

PHP가 배열에 중복된 이름을 가진 요소를 출력하는 여러 가지 방법

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-07-25 08:59:50
원래의
1352명이 탐색했습니다.
为大家介绍几个php输出数组中的重名元素的方法,有需要的朋友,可以参考下。

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

1

2

3

4

5

<?php 

    $array1 = array("a" => "green", "red", "blue"); 

    $array2 = array("b" => "green", "yellow", "red"); 

    $result = array_intersect($array1, $array2); 

?>

로그인 후 복사

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

方法2、自己实现的算法

1

2

3

4

5

6

7

8

9

10

11

12

<?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、自定义递归函数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?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/>"

?>

로그인 후 복사

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

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

    function toarr($arr){ //对数组进行递归,以字符串形式返回 

        foreach ($arr as $k=>$v){ 

             if (!is_array($v)) { 

                $str.=$v." "

             

             else

                $str.=toarr($v); 

             

        }    

      return $str

    }/*递归函数结束*/ 

?>

로그인 후 복사

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

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



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿