注意:未定义索引: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'];