Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
注意:未定义索引:PHP_Php_Html_Css - Fatal编程技术网

注意:未定义索引:PHP

注意:未定义索引:PHP,php,html,css,Php,Html,Css,我对一些未定义的索引有点问题。我意识到这可以通过使用error\u reporting(E\u ALL)将其更改为错误报告来解决,或ini\u集('display\u errors','1'),但希望在不需要更改的情况下解决此问题。这里是我抛出错误的代码块 // print out errors if (!empty($errors)){ echo '<div class="form_errors">';

我对一些未定义的索引有点问题。我意识到这可以通过使用
error\u reporting(E\u ALL)将其更改为错误报告来解决,或
ini\u集('display\u errors','1'),但希望在不需要更改的情况下解决此问题。这里是我抛出错误的代码块

// print out errors
              if (!empty($errors)){
                echo '<div class="form_errors">';
                foreach ($errors as $key => $value) {
                  var_dump($value);
                  if (isset($value) ==  null or empty($value)){
                    $value = ' A blank value ';
                  }
                  echo '<p>Please check '. $key . ' for errors.' . $value . 'is not a valid entry.</p>';
                }
                echo '</div>';
              }
我的TForm类是这样的

class TForm {
    //validation returns an error array when done. 
    public function validate($fields){
        $errors = array();
        foreach($fields['fields'] as $key=>$value) {
            foreach ($fields['required'] as $req_key => $req_value) {
                if ($key == $req_key){
                    $req_key = '\''.$req_value.'\'';
                    if (preg_match($req_key , $value) == false) {
                        $errors[$key] = $value;
                    }  
                }
            }
        }
        return $errors;
    }

    //redirect function
    public function redirect($fields){
        header('Location: '. $fields['redirect']);
    }

}
这也是我写过的第一节课,如果有人觉得我能指出我在哪里可以表现得更好或者打破标准。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@jordan抱歉,我不清楚错误报告
E_ALL
是我当前使用的,在生产机器上不会报告此错误,因为您将使用
0
。我的解决方案是使用
!空($_POST['Name'])$_POST['Name']:''
如果我的想法正确,如果它不是空的,它将使用
$\u POST['Name']
中的任何内容,如果它是空的,它将值设置为
'

更新2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@mike在现场使用isset结果总是失败

'fields' => array( 
            'Name' => !isset($_POST['Name']) ? $_POST['Name']:'',
            'Address1' => !isset($_POST['Address1']) ? $_POST['Address1']:'',
            'Address2' => !isset($_POST['Address2']) ? $_POST['Address2']:''
        )
当name等于有效变量(如Frank Wiebenga)时,会导致

Please check Name for errors. A blank value is not a valid entry.
Please check Address1 for errors. A blank value is not a valid entry.
当Name等于有效变量(如Frank Wiebenga)时,使用empty方法正确返回

Please check Address1 for errors. A blank value is not a valid entry.

您需要添加完整的错误消息以帮助您更好地完成脚本的编写。我注意到,唯一未声明的外部变量是
$\u POST
值。请更新下面的代码,并告知您仍然存在的确切错误

if(isset($_POST['Submit'])){
    //create the fields you would want required and what fields on form to check.

    if(!isset($_POST['name']) || !isset($_POST['Address1']) || !isset($_POST['address2']))
    {
        die("Empty POST NOt allowed ");
    }

感谢对
未定义索引的一般回答
注意:

如果
$myArray['myKey']
数组中不存在
myKey
,则
$myArray['myKey']
将生成未定义的索引通知。您可以通过在使用它之前检查它是否存在来解决此问题

if (array_key_exists($myArray, 'myKey')) {
  echo $myArray['myKey'];
}

根据您的更新,您应该使用
isset
而不是
empty
,这样可以避免未定义的索引错误:

$name = (isset($_POST['Name'])) ? $_POST['Name'] : '';
更多信息

--更新--

尝试翻转三元赋值:

$name = (!isset($_POST['Name'])) ? '' : $_POST['Name'];

什么是完整的错误消息,哪个索引未定义?错误报告开发值:“E|u ALL | E|u STRICT”始终在哪一行是错误?还要注意,无论您的错误如何,这一行没有意义:
如果(isset($Value)=null或空($Value))
isset
返回布尔值,因此它永远不能为空,尽管用==null检查它也将计算为false。。。但是您可以只检查
if(empty($value))
而不是整个构造,您应该在开发环境中始终使用
eall
错误报告级别。没有它,你只会让你的开发工作变得更加困难。无论如何,在您的生产环境中使用较低的错误报告级别,但不要在开发中使用。非常感谢您的帮助。
$name = (isset($_POST['Name'])) ? $_POST['Name'] : '';
$name = (!isset($_POST['Name'])) ? '' : $_POST['Name'];