在PHP中找到两个数组内的共同价值

时间:2018-09-26 10:11:51

标签: php arrays

实现find_common函数。当传递两个名称数组时,它将返回一个包含出现在一个或两个数组中的名称的数组。返回的数组应该没有重复。

<?php
class Names
{
 public static function find_common($array1, $array2)
 {
    $arr = array();
    foreach($array1 as $value1){
        if(in_array($value1,$array2)){
            array_push($arr,$value1);
        }
    }

    return $arr;
  }
}

$names = Names::find_common(['Ava', 'Emma', 'Olivia'], ['Olivia', 'Sophia', 'Emma']);
echo join(', ', $names); // should print Emma, Olivia, Ava, Sophia

输出应打印:Emma,Olivia,Ava,Sophia 我得到的只是奥利维亚艾玛(:

4 个答案:

答案 0 :(得分:3)

使用

array_unique(array_merge(['Ava', 'Emma', 'Olivia'], ['Olivia', 'Sophia', 'Emma']));

array_merge将所有值放在一个数组中,然后array_unique删除重复项。

答案 1 :(得分:0)

这真的很容易。使用array_intersect()

array_intersect(['Ava', 'Emma', 'Olivia'], ['Olivia', 'Sophia', 'Emma']);

数组将包含Emma&Olivia。

检查文档! :-) http://php.net/manual/en/function.array-intersect.php

  

更新您的问题未反映您想要的输出。您真的要问如何合并没有重复的数组吗?

在这种情况下,将数组与

合并
array_unique(array_merge(['Ava', 'Emma', 'Olivia'], ['Olivia', 'Sophia', 'Emma']));

http://php.net/manual/en/function.array-merge.php

http://php.net/manual/en/function.array-unique.php

答案 2 :(得分:0)

$names = unique_names(['Ava', 'Emma', 'Olivia'], ['Olivia', 'Sophia', 'Emma']);
echo join(', ', $names); // should print Emma, Olivia, Ava, Sophia

答案 3 :(得分:0)

尝试对我有用:

function unique_names(array $array1, array $array2) : array
    { 
     $array3= array_intersect($array1,$array2);
     return array_unique(array_merge($array3,$array1, $array2)); 
    }