0
PHP Notice:  Undefined index: parentid in /home/public_html/data/Dataset.php on line 319
PHP Notice:  Undefined index: destinations in /home/public_html/data/Dataset.php on line 330
PHP Notice:  Undefined index: radiogroup in /home/public_html/data/Dataset.php on line 340
PHP Notice:  Undefined index: radiogroup in /home/public_html/data/Dataset.php on line 340
PHP Notice:  Undefined index: radiogroup in /home/public_html/data/Dataset.php on line 340
PHP Notice:  Undefined index: radiogroup in /home/public_html/data/Dataset.php on line 340
PHP Notice:  Undefined index: name in /home/public_html/data/Dataset.php on line 220
PHP Notice:  Undefined index: fieldhelp in /home/public_html/data/Dataset.php on line 236

从 5.2 升级到 php 5.3 后,我的脚本拒绝工作。我在日志中看到了许多 PHP 通知。

在第 319 行:if( $this->aFields["parentid"] ) {

在第 340 行: if( $curField["radiogroup"] ) {

我怀疑问题出在另一个包含许多此类行的文件中

 if( isset( $this->request_vars[$name]["id"] ) ) {

我该如何解决?如果从上面判断就那么容易。

4

4 回答 4

2

这不是错误。它表示数组 $curField 中没有索引为“radiogroup”等的元素。

您必须首先使用 isset 检查它是否存在,例如:

if(isset($curField['radiogroup']) and $curField['radiogroup']) {
于 2012-10-11T13:46:19.527 回答
1

未定义的索引意味着您尝试访问不存在的关联数组的键。这应该存在于您的旧配置中,但由于错误报告级别,它从未出现过。

您应该更改您的代码,以便首先测试该变量是否已设置然后使用它。

例如:

更改表单的出现次数:

if( $this->aFields["parentid"] ) {
   ...
}

if( isset($this->aFields["parentid"]) ) {
   ...
}
于 2012-10-11T13:49:55.377 回答
1

从 PHP 文档(error_reporting):

<?php
// Turn off all error reporting
error_reporting(0);
?>

该功能的其他有趣选项:

<?php

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>
于 2012-10-11T13:50:53.470 回答
0

很难从代码中分辨出来,但我认为错误报告级别已经改变,现在它会显示通知。但是,如果可能的变量可能不存在,您应该使用类似的东西:

if( isset($this->aFields["parentid"]) ) {

在您的情况下,您可以使用空,因为这将检查它的两个集合并具有一个值并且它不等于 0/false(与原始行相同)

if( ! empty($this->aFields["parentid"]) ) {
于 2012-10-11T13:43:47.163 回答