当在两个数组之间进行一致性检查时,需要什么,以便不跳过紧跟在异常之后的位置。有人能发布一个遍历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、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++;
}
}发布于 2014-01-14 03:56:10
这是可行的,但显然您需要添加某种类型的错误检查,例如,查看$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总是递增的,然而,作为$arr2的迭代器的$j只有在找到匹配值时才会递增。
https://stackoverflow.com/questions/21099908
复制相似问题