我有一个从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
答案 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;
}
}
对其进行排序。