未定义的偏移??? PHP我的代码附加

时间:2012-08-10 04:50:29

标签: for-loop php

  

可能重复:
  PHP: “Notice: Undefined variable” and “Notice: Undefined index”

我在运行时获得“ranksection”数组并且在“ranksection”上实现ksort之后我想在null索引上向上移动其数据,因为我在打印ranksection之前向上移动数据如果有任何可用的数组我成功获得我想要什么,但它也给出错误“未定义索引”我不知道为什么我的代码,

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

for ($var = 0; $var <= $sortvar; $var++) {
  if ($ranksection[$var] !=  null) {
    $sequence[$seqnum] = $ranksection[$var];
    $seqnum++;
  }
}

print_r($sortvar);
print_r($ranksection);
print_r($sequence);

结果是,

3

Array ( [1] => Self Introduction [2] => Experience in Econometrics and multivariate S [3] => Experience ) 

Array ( [0] => Self Introduction [1] => Experience in Econometrics and multivariate S [2] => Experience )

希望得到你的建议

4 个答案:

答案 0 :(得分:3)

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

尝试使用foreach

foreach($ranksection as $key => $value ) {
  if ($ranksection[$key] !=  null) {
    $sequence[$seqnum] = $ranksection[$key];
    $seqnum++;
  }
}

答案 1 :(得分:0)

将此作为for循环的条件:

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

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

答案 2 :(得分:0)

您应该在count()-1循环中使用for

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

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

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

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

答案 3 :(得分:0)

你将超越数组的末尾,因为:

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

数组索引从0开始,但count返回数字,其中1是第一项,而不是0.执行此操作以修复它:

$sortvar = count($ranksection) - 1;

或更改&lt; = to&lt;

for ($var = 0; $var < $sortvar; $var++) {   
    if ($ranksection[$var] !=  null) {   
          $sequence[$seqnum] = $ranksection[$var];   
          $seqnum++;   
    }   
}