使用2个阵列问题进行一致性检查

时间:2014-01-13 19:39:18

标签: php arrays

当在2个数组之间进行一致性检查时,需要的是不要跳过紧跟异常的位置。有人可以发布一个迭代2个数组的循环并打印值是否匹配?

$arr1 = array('apple', 'pear', 'banana', 'orange', 'melon', 'kiwi');
$arr2 = array('apple', 'pear', 'banana', 'melon', 'kiwi');
$count = 0; //keeps track of position to be checked in arrays.

在这种情况下,循环应该打印true,true,true,false,true,true。应当注意,当发现异常时,该值被移除,因此使用标准化的位置检查未来值以考虑移除的错误值。我尝试使用unset()后跟array_values(),但总是跳过下一个值。这对我来说是一场噩梦。有什么想法吗?

$count = 0;
$lines = file("url");
foreach($lines as $line_num => $line){
    if(strcmp(sub($line, 0, 3), 'gis') == 0){
        $site = sub($line, 3, 7); //get latitude eg. gis4021
        if($site != $sites[$count]){
            //deal with case where $site does not equal expected value in base array
        }
        else//$sites equals expected value in array
            $count++;
    }
}

1 个答案:

答案 0 :(得分:1)

这很有效,但显然你需要添加某种错误检查,例如要查看$arr2是否不超过$arr1

$arr1 = array('apple', 'pear', 'banana', 'orange', 'melon', 'kiwi');
$arr2 = array('apple', 'pear', 'banana', 'melon', 'kiwi');

$count = count($arr1);
for ($i = 0, $j = 0; $i < $count; $i++) {
    if ($arr1[$i] == $arr2[$j]) {
        $j++;
        print 'true ';
        continue;
    }

    print 'false ';
}

代码输出true true true false true true

正如您所看到的,它遍历$arr1的所有条目,因为$i总是递增,但是$j$arr2的迭代器只会递增{{1}}找到匹配值。