完整数组的未定义偏移但vardump已满

时间:2017-05-16 07:51:59

标签: php arrays offset

我的PHP代码存在一些问题。

<?php
  if(!empty($_POST['IP_adress'])){
    $IP_adress = $_POST['IP_adress'];
    $block[4] = explode(".",$IP_adress);
    $i = 0;
    var_dump($block);
    for($i=0;$i<4;$i++){
      if ($block[$i]<0 || $block[$i]>255){//here is line 9
        $_SESSION['IP_error'] = "non-valid IP adress";
        header('Location: controle.php');
      }
    }
  }
?>

当我启动代码时,var_dump函数表示我的数组($ block)已正确填充,但我有这个错误。

array(1) { [4]=> array(4) { [0]=> string(3) "255" [1]=> string(3) "255" [2]=> string(3) "255" [3]=> string(3) "255" } }

Notice: Undefined offset: 0 in /var/www/html/select.php on line 9

Notice: Undefined offset: 0 in /var/www/html/select.php on line 9

Notice: Undefined offset: 1 in /var/www/html/select.php on line 9

Notice: Undefined offset: 1 in /var/www/html/select.php on line 9

Notice: Undefined offset: 2 in /var/www/html/select.php on line 9

Notice: Undefined offset: 2 in /var/www/html/select.php on line 9

Notice: Undefined offset: 3 in /var/www/html/select.php on line 9

Notice: Undefined offset: 3 in /var/www/html/select.php on line 9

[output errors][1]
你能帮帮我吗?

P.S。对不起语法错误和英语。法国母语人士在这里!

1 个答案:

答案 0 :(得分:1)

第5行中,您使用了$block[4] = explode(".",$IP_adress);,这就是var_dump输出告诉您的内容。

您已创建一个关联数组,其中展开的IP 数组存储为数组4的键$block的值。要访问展开的IP字段,您可以将第5行修改为$block = explode(".",$IP_adress);,或将第9行修改为if ($block[4][$i]<0 || $block[4][$i]>255){