我收到了未定义的偏移错误

时间:2014-04-25 03:50:11

标签: php arrays

为什么我会收到Undefined offset error?我试图为数组中的每个元素添加10,20,20。请帮忙。提前致谢

<?php
    $arr = array("a","b","c");
    $counter = 0;
    $status = array();
    foreach($arr as $a){
        $status[$counter] += 10;
        $status[$counter] += 20;
            $status[$counter] += 20;
        echo $status[$counter]."<br>";
        $counter ++;
    }
?>

错误:

Notice: Undefined offset: 0 in C:\xampp\htdocs\test\index.php on line 6
300

Notice: Undefined offset: 1 in C:\xampp\htdocs\test\index.php on line 6
300

Notice: Undefined offset: 2 in C:\xampp\htdocs\test\index.php on line 6
300

`

3 个答案:

答案 0 :(得分:1)

您正尝试在此行中的未定义数组元素中添加10:

$status[$counter] += 10;

尝试这样:

  $arr = array("a","b","c");
  $counter = 0; 
  $status = array(); 
  foreach($arr as $a){ 
  $status[$counter] = 10;//assign first 
  $status[$counter] += 20; //concate with assigned element
  $status[$counter] += 20;
   echo $status[$counter]."<br>"; 
   $counter ++; 
 }

它不应该提供任何通知。

答案 1 :(得分:0)

在您的代码中,$status是一个空数组,因此当您尝试向未定义的索引添加内容时,您将看到该通知(仅限第一次)。

根据$status中元素的数量,将$arr初始化为值为0的数组:

$status = array_fill(0, count($arr), 0);

答案 2 :(得分:0)

您正在使用“添加和分配”运算符。

如果您只想分配一个值,那么

$status[$counter] = 10;

工作得很好。

但是,您要求PHP向数组中的现有元素添加内容,但由于您尚未初始化它,因此还没有任何元素。只需在开始循环之前初始化数组。