我在$ _POST方法上收到一个未定义的错误

时间:2012-10-09 23:10:54

标签: php

  

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

这很奇怪,但我使用$ _POST方法发布输入,如下所示:

$c = count($_POST['gridValues']);

但问题是我收到错误声明:

  

注意:未定义的索引:第40行/web/stud/..../中的gridValues   (这是上面的行)

为什么我收到此错误,因为$ _POST方法肯定是正确的?

以下是整个代码:

<?php

ini_set('session.gc_maxlifetime',12*60*60);
ini_set('session.gc_divisor', '1');
ini_set('session.gc_probability', '1');
ini_set('session.cookie_lifetime', '0');
require_once 'init.php'; 

 ini_set('display_errors',1); 
 error_reporting(E_ALL);


session_start();

?>

$i = 0;
$c = count($_POST['gridValues']);

for($i = 0;  $i < $c; $i++ ){

    switch ($_POST['gridValues'][$i]){

 case "3": 
    $selected_option = "A-C";
    break;

    case "4": 
    $selected_option = "A-D";
    break;

    case "5": 
    $selected_option = "A-E";
    break;
}
}

2 个答案:

答案 0 :(得分:2)

您需要检查是否先设置:

<?php

if(isset($_POST['gridValues'])) {
   $c = count($_POST['gridValues']);
}
?>

答案 1 :(得分:0)

有几种方法可以阻止有关未定义变量的通知级别消息。

  1. 将@放在变量前面。例如:$c = @$_POST['gridValues']这可能很危险,因为您明确告诉它忽略变量的任何问题。有关@:http://php.net/manual/en/language.operators.errorcontrol.php

  2. 的更多信息,请参阅PHP手册
  3. 关闭(或更改)错误报告。例如:ini_set('display_errors', 0);

  4. 在使用之前检查变量是否已定义。例如:

    $c = '';
    if(!empty($_POST['gridValues'])){
        $c = count($_POST['gridValues']);
    }