PHP array_diff用于比较2个不同长度的数组?

时间:2014-01-09 09:35:33

标签: php arrays string-comparison array-difference

我使用array_diff来比较2个通过explode转换成数组的字符串,它可以比较2个相同长度的数组,我如何完成比较不同长度的数组?

实施例
Array1:quisck browsn fosx
Array2:快速棕色狐狸 作品!

Array1:quisck browsn
Array2:快速棕色狐狸 不起作用!!(没有提到狐狸)

<?php
$str1 = "The quisck browsn";
$str2 = "The quick brown fox";
$tempArr;
$var2;
$ctr=0;

echo "Array1:<br> $str1 <br><br>Array2:<br> $str2";

$strarr = (explode(" ",$str1));
echo("<br>");

$strarr2 = (explode(" ",$str2));
echo("<br>");

$result = array_diff($strarr,$strarr2);
//print_r($result);

if (count($result) > 0){
    echo "<br>Differences: | " ;
    foreach ($result AS $result){
        echo $result." | ";
    }
 }

2 个答案:

答案 0 :(得分:1)

试试这个

$str1 = "The quisck browsn";
$str2 = "The quick brown fox";
$tempArr;
$var2;
$ctr=0;

$strarr = (explode(" ",$str1));
echo("<br>");

$strarr2 = (explode(" ",$str2));
echo("<br>");

if(sizeof($strarr) > sizeof($strarr2)){
    $result = array_diff($strarr,$strarr2);
}else{
    $result = array_diff($strarr2,$strarr);
}

以上将返回数组大小之差大于lower.i.e。元素存在于第一个数组中但不存在于第二个数组中。

但是如果你想要它们中的两个完全不同,即第一个数组中的元素在第二个中不存在,反之亦然,你可以做一些事情

$fullDiff = array_merge(array_diff($strarr, $strarr2), array_diff($strarr2, $strarr));

答案 1 :(得分:0)

$str1 = "The quisck browsn";
$str2 = "The quick brown fox";
$tempArr;
$var2;
$ctr=0;

echo "Array1:<br> {$str1} <br><br>Array2:<br> {$str2}";

$strarr = (explode(" ",$str2));
echo("<br>");

$strarr2 = (explode(" ",$str1));
echo("<br>");

$result = array_diff($strarr,$strarr2);
//print_r($result);

if (count($result) > 0){
    echo "<br>Differences: | " ;
    foreach ($result AS $result){
        echo $result." | ";
    }
}   

使用它,因为它返回一个数组,其中包含$ str2中任何其他任何数组中都不存在的条目。