繁体   English   中英

如何将循环值与不完全相同的数组值进行比较?

[英]How can I compare a loop value to an array value that is not sequentially the same?

我有一个从1到4的循环,我有一个包含1,2和4的数组,但是错过了数字3.如何将缺失的3放入或替换为0作为我唯一的想法来解决我的问题,或者得到所有相同的值,然后比较双方? 因为我需要比较双方是否相同。

使用此代码,我收到错误:“undefined offset 3”。

$a = array(1,2,4);
for ($i=1; $i <= 4; $i++) {
    if ($i==$a[$i]) {
        echo 'true';
    } else {
        false;
    }
}

有没有其他方法来比较所有具有相同价值的人

1 & 1 = true
2 & 2 = true
3 &   = false
4 & 4 = true

并显示类似的东西

1. true
2. true
3. false
4. true

可能最直接的方法是使用in_array()

$a = [1, 2, 4];

for ($i = 1; $i <= 4; $i++) { 
    echo $i.'. '.(in_array($i, $a) ? 'true' : 'false').PHP_EOL; 
}

这是一个有效的例子

像这样的东西:

$a = array(1,2,4);
$flipped = array_flip($a);
for($i = 1; $i <= 4; $i++){
    $res[$i]="false";
    if(array_key_exists($i, $flipped)){
        $res[$i] = "true";
    }
}

foreach($res as $key=>$value){
    echo $key.". ".$value."<br/>";
}

您的数组中的值: $a = array(1, 2, 4)将不对应于$ifor循环时使用$a[$i] ,因为在方括号内的值是指中的关键数组,而不是值。

PHP中的数组是一个有序映射,其键与值对应。 当你定义一个值数组而不分配键时,比如$a = array(1, 2, 4) ,PHP会自动为每个值创建整数键,从零开始,所以实际上你创建了这个数组:

[0 => 1, 1 => 2, 2 => 4]

使用您显示的代码,您应该获得4和3的未定义偏移通知。

如果对数组进行排序,则检查序列中缺少元素的一种方法是检查for循环的每个增量的数组的current值,并在值匹配时移动到next元素。

$a = array(1,2,4);

for ($i=1; $i <= 4; $i++) {
    if (current($a) == $i){
        echo "$i: true".PHP_EOL;
        next($a);
    } else {
        echo "$i: false".PHP_EOL;
    }
}

必须对数组进行排序才能使其正常工作。 如果它不符合您的示例中的顺序,则可以使用sort($a);对其进行sort($a);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM