0

我想比较两个数组并想得到 PHP 中匹配的值的数量。例如

$a1 = array(one, two, three);
$a2 = array(two, one, three);

如果我比较这些数组,我应该得到0不同的结果。谁能帮忙

提前致谢。

4

4 回答 4

1
$arr1 = array('one', 'two', 'three');
$arr2 = array('two', 'one', 'three');
echo "number of differences : " . count(array_diff($arr1, $arr2));
于 2012-09-21T11:51:50.023 回答
1
$a1 = array( 1, 2, 3, 4 );
$a2 = array( 2 , 1, 3, 8 );
$matched = array_intersect( $a1, $a2 );
var_dump( $matched );

这应该输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

array_intersect 将为您提供第二个中存在的所有元素或第一个数组 - 使用第一个数组的键

于 2012-09-21T11:56:35.050 回答
1

我希望这有帮助

$diff = count(array_diff($a1, $a2));
$matches = count($a1) - $diff;

参考:PHP数组比较

于 2012-09-21T11:59:05.633 回答
0

我为你做了一个简单的功能

此功能将为您提供重复和不重复的数据

我以国家为例

$contries1=array('egypt','america','england');
$contires2=array('egypt','england','china');
function countryRepeated($contries1,$contires2,$status='1'){
    foreach($contries1 as $country){
        if(in_array($country,$contires2))
            $repeated[]=$country;
        else
            $unrepeated[]=$country;
    }
        return ($status=='1')?$repeated:$unrepeated;
}

要获得重复的国家使用

print_r(countryRepeated($contries1,$contires2));

结果:

Array ( [0] => egypt [1] => england )

或者,如果您想获得未重复的国家

您可以使用:

print_r(countryRepeated($contries1,$contires2,'2'));

结果:

Array ( [0] => america ) 
于 2012-09-21T12:06:41.300 回答