2012-08-10 68 views
1

可能重复:
PHP: “Notice: Undefined variable” and “Notice: Undefined index”未定义的偏移量PHP我的代码附加

我得到在运行时间和“ranksection”实施ksort后“ranksection”阵列我想向上移动的空其数据索引,因为我打印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) 

的希望您的建议

+0

错误在哪条线路? – 2012-08-10 04:51:54

+0

只有当您尝试访问不存在的数组元素时才会出现此错误。例如,如果$ array有3个元素,那么如果你尝试访问数组元素$ array [3]等等。 – WatsMyName 2012-08-10 04:55:56

+0

@Sabin数组有3个元素,所以它会找到它,第二件事是循环它不会运行3索引值后 – 2012-08-10 05:08:55

回答

3

见第二阵列的print_r的部分它索引1开始并且您的$ var分配为0. 现在,您在尝试访问第0个索引。这就是为什么你会得到这个错误。

尝试使用foreach

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

感谢您的回复它帮助我什么是行“foreach($ ranksection为$ key => $ value)”实际上做? – 2012-08-10 05:11:57

+1

http://php.net/manual/en/control-structures.foreach.php阅读文档。 – Vins 2012-08-10 05:14:30

0

做到这一点作为条件你for循环:

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

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

+0

或者只是'$ var <$ sortvar'。 – Blender 2012-08-10 04:55:02

+0

@Blender或者......;) – 2012-08-10 04:55:45

0

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

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

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

或者,使用小于(不小于等于)作为操作员:

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

你路过因为:

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

数组索引从0开始,但计数返回其中1是第一项,不为0的数量这样做是为了解决它:

$sortvar = count($ranksection) - 1; 

或更改< =到<

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