首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2个阵列的一致性检查问题

2个阵列的一致性检查问题
EN

Stack Overflow用户
提问于 2014-01-14 03:39:18
回答 1查看 61关注 0票数 0

当在两个数组之间进行一致性检查时,需要什么,以便不跳过紧跟在异常之后的位置。有人能发布一个遍历2个数组并打印值是否匹配的循环吗?

代码语言:javascript
复制
$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(),但是总是跳过下一个值。这对我来说是一场噩梦。有什么想法吗?

代码语言:javascript
复制
$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++;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-01-14 03:56:10

这是可行的,但显然您需要添加某种类型的错误检查,例如,查看$arr2是否不长于$arr1

代码语言:javascript
复制
$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只有在找到匹配值时才会递增。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21099908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档