PHP中数组中存在未定义的offet错误


undefined offet error in arrays in PHP

我遇到问题,请帮帮我。

这是我的阵列

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

发生错误是因为数组中没有第五个元素。所以像下面的一样更改代码

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

在这种情况下,

$j <= $size

将循环迭代6次,因此它会寻找第六个元素,即$size[5],因为键从0开始,并且数组中没有第六个或$size[5]元素。所以你会得到错误。因此,当数组大小为5时,您需要迭代循环5次。因此,您必须将条件更改为$j<for循环中的大小。

更改

$j<=$size

$j<$size

执行

for($j=0; $j<$size; $j++)
$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]];
}

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

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

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

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

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

这样,您就永远不会尝试访问不存在的元素(在您的案例中为$subject[5])。