未定义偏移量0,但var_dump中没有任何内容未定义


Undefined offset 0 but nothing is undefined in var_dump

最近我在数组中遇到了很多错误,我似乎根本无法解决这个问题。

我得到错误:

未定义偏移量0

所以这当然意味着该指数不存在。

现在,在这个错误之后,我做的下一件事是var_dump数组。

首先我给你看一些代码:

var_dump($array1);
var_dump($array2);
for($i = 0; $i < count($array1); $i++){
   var_dump($i);
}

注意:$array1和$array2中的值数量相同。因此,计数1个数组并在for中使用它对两个都有效

我尝试在for中使用$array1[$i]$array2[$i],但当我使用它时,我会收到错误。

因此var_dump的结果是:

array(2) {
  [0]=>
  string(5) "value1"
  [1]=>
  string(5) "value2"
}
array(2) {
  [0]=>
  string(5) "value1"
  [1]=>
  string(5) "value2"
}
int(0)
int(1)

错误来自:var_dump($array2[$i]);

我获取阵列的方式:

$array2=array_values(Input::get('array2'));

和复选框:

<input type="checkbox" name="array2[]" value="value">

什么是未定义?据我所知,$array2[$i]应该正常工作吗?我做错了什么?

您可以直接执行

foreach($array1 as $key => $value){
    if (isset($array2[$key])){
        // do stuff
    }
}