当在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++;
}
}
答案 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}}找到匹配值。