0

可能重复:
PHP:“注意:未定义的变量”和“注意:未定义的索引”

这很奇怪,但我正在使用下面的 $_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;
}
}
4

2 回答 2

2

您需要先检查它是否已设置:

<?php

if(isset($_POST['gridValues'])) {
   $c = count($_POST['gridValues']);
}
?>
于 2012-10-09T23:12:16.670 回答
0

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

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

  2. 关闭(或更改)错误报告。前任:ini_set('display_errors', 0);

  3. 在使用之前检查变量是否已定义。前任:

    $c = '';
    if(!empty($_POST['gridValues'])){
        $c = count($_POST['gridValues']);
    }
    
于 2012-10-09T23:21:48.747 回答