我遇到问题,请帮帮我。
这是我的阵列
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])。