-4

我遇到问题请帮助我。

这是我的数组

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]];

        }

但它给了我一个错误信息Undefined offset: 5

4

6 回答 6

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。所以你必须在for循环中将条件更改为$j < $size。

于 2013-07-04T06:55:53.217 回答
2

for($j=0; $j<$size; $j++)
于 2013-07-04T06:55:37.447 回答
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]];
}
于 2013-07-04T07:07:17.670 回答
2

改变

$j<=$size

$j<$size
于 2013-07-04T06:56:55.073 回答
1

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

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

这样,您将永远不会尝试访问不存在的元素(在您的情况下为 $subject[5])。

于 2013-07-04T06:59:59.903 回答
1

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

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

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

于 2013-07-04T06:56:45.753 回答