PHP中数组中未定义的偏移量错误

时间:2013-07-04 06:53:56

标签: php arrays

我遇到了问题,请帮助我。

这是我的数组

Array
(
    [0] => subject7
    [1] => subject6
    [2] => subject5
    [3] => subject3
    [4] => subject2
)

我的数组大小为5

$sub= array();
        for($j=0; $j<=$size; $j++)
        {
        $sub[] = $subject_value[$subject[$j]];

        }

但它给我一条错误消息未定义的偏移量:5

6 个答案:

答案 0 :(得分:3)

发生错误是因为您在数组中没有第5个元素。所以更改代码如下

$sub= array();
        for($j=0; $j<$size; $j++)
        {
        $sub[] = $subject_value[$subject[$j]];

        }

在这种情况下

$j <= $size

将迭代循环6次,所以它寻找第6个元素,即$ size [5],因为键从0开始,你没有数组中的第6个或$ size [5]元素。所以你会得到错误。所以你需要迭代循环5次,因为你的数组大小是5.所以你必须改变条件为$ j&lt; for循环中的$ size。

答案 1 :(得分:2)

DO

for($j=0; $j<$size; $j++)

答案 2 :(得分:2)

变化

$j<=$size

$j<$size

答案 3 :(得分:2)

$sub= array();
for($j=0; $j<=$size; $j++)
{
    $sub[] = $subject_value[$subject[$j]];
}

应该是

$sub= array();
for($j=0; $j<$size; $j++)
{
    $sub[] = $subject_value[$subject[$j]];
}

答案 4 :(得分:1)

您正在使用<=运算符,它还会检查索引号5并使该索引的条件为true。即使只有指数直到4。

for($j=0; $j<$size; $j++)

根据上面的代码将其更改为<运算符,因为从0开始只有索引4,然后它生成5个数组元素。

答案 5 :(得分:1)

为避免此类常见错误,您可以使用foreach循环:

foreach($subject as $item){
    //work here
}

这样你就永远不会试图访问一个不存在的元素(在你的情况下是$ subject [5])。