如何在PHP中根据它们的值找到两个数组的匹配元素

时间:2015-02-17 07:13:10

标签: php arrays

我创建了两个数组,现在我想根据这两个数组得到匹配的元素数。

以下是阵列结构:

Array
(
    [skill] => Array
        (
            [0] => 6
            [1] => 10024
            [2] => 2
            [3] => 17
            [4] => 16
        )

)
Array
(
    [skill] => Array
        (
            [0] => 6
            [1] => 2
            [2] => 17
        )

)

这里有三个元素匹配,两个数组都可以有任意数量的技能/元素......我需要根据这两个数组找到匹配的元素数。

我尝试了array_intersect(),但它给出了以下结果:

我得到了什么:

Array
(
    [skill] => Array
        (
            [0] => 6
            [1] => 10024
            [2] => 2
            [3] => 17
            [4] => 16
        )

)

基本上我需要找到" count"匹配两个数组中的元素或仅返回匹配的元素,我可以从中获得计数。

3 个答案:

答案 0 :(得分:4)

你几乎拥有它:

$count = count(array_intersect ($arr1['skill'], $arr2['skill']));

由于您实际上想要比较skill内的数组,因此您必须访问它们。

Array_intersect为您提供了两者中的项目数组,因此我使用count函数包装整个事件,该函数返回该数组的大小,从而为您提供类似项目的数量。

答案 1 :(得分:0)

您也可以使用

$a=array(
    'skill'=>array(
        0=>6,
        1=>10024,
        2=> 2,
        3=> 17,
        4 => 16, 
        )
    );

$b=array(
    'skill'=>array(
        0=>6,
        1=>2,
        2=> 17,
        )
    );
$array=array_merge_recursive($a, $b);
echo count($array['skill'])-count(array_unique($array['skill']));

答案 2 :(得分:-2)

你正确的方式。用户下面的代码为计数。

$a1['skill'] = array("6", "10024", "2", "17", "16");
$a2['skill'] = array("6", "2", "17");

$result = count(array_intersect($a1['skill'], $a2['skill']));
echo $result;