1

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

前任。
Array1: The quisck browsn fosx
Array2: The quick brown fox
Works!!

Array1: The quisck browsn
Array2: the quick brown fox
doesn't Work!!(狐狸没有提到)

<?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." | ";
    }
 }
4

2 回答 2

4

尝试这个

$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.ie 元素,但不在第二个数组中。

但是,如果您想要其中 2 个之间的完全区别,即第一个数组中的元素在 2nd 中不存在,反之亦然,您可以执行以下操作

$fullDiff = array_merge(array_diff($strarr, $strarr2), array_diff($strarr2, $strarr));
于 2014-01-09T09:41:21.900 回答
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 中不存在于任何其他数组中的所有条目。

于 2014-01-09T10:04:45.067 回答