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

时间:2016-08-21 03:25:27

标签: php arrays

我有一个从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

3 个答案:

答案 0 :(得分:4)

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

$a = [1, 2, 4];

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

这是一个有效的example

答案 1 :(得分:0)

类似的东西:

$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/>";
}

答案 2 :(得分:0)

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

PHP中的数组是一个有序映射,其键与值对应。当您在不指定键的情况下定义值数组时,例如$a = array(1, 2, 4),PHP会自动为每个值创建整数键,从零开始,因此实际上您正在创建此数组:

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

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

如果对数组进行了排序,检查序列中缺少元素的一种方法是检查current循环的每个增量的数组的for值,然后移到{{值匹配时的1}}元素。

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; } } 对其进行排序。