1
4

4 回答 4

3

请参阅第二个数组的 print_r 部分,它以索引 1 开头,您的 $var 分配给 0。现在,您正在尝试访问第 0 个索引。这就是您收到此错误的原因。

尝试使用foreach

foreach($ranksection as $key => $value ) {
  if ($ranksection[$key] !=  null) {
    $sequence[$seqnum] = $ranksection[$key];
    $seqnum++;
  }
}
于 2012-08-10T04:57:42.740 回答
0

您将超出数组的末尾,因为:

$sortvar = count($ranksection); // This is 4

数组索引从 0 开始,但 count 返回数字,其中 1 是第一项,而不是 0。这样做可以修复它:

$sortvar = count($ranksection) - 1;

或将 <= 更改为 <

for ($var = 0; $var < $sortvar; $var++) {   
    if ($ranksection[$var] !=  null) {   
          $sequence[$seqnum] = $ranksection[$var];   
          $seqnum++;   
    }   
}
于 2012-08-10T04:56:37.717 回答
0

将此作为for循环的条件:

for ($var = 0; $var <= $sortvar - 1; $var++) {

-1很重要,因为数组从 0 开始,然后是数组的长度减一。

于 2012-08-10T04:53:57.967 回答
0

你应该count()-1在你的for循环中使用:

$sortvar = count($ranksection) -1;
$seqnum = 0;

for ($var = 0; $var <= $sortvar; $var++) {

或者,使用小于(不小于等于)作为运算符:

for ($var = 0; $var < $sortvar; $var++) {
于 2012-08-10T04:54:19.573 回答