注意:未定义的索引:XXX - 这真的重要吗?

Moe*_*ine 4 php variables debugging

由于我将错误报告级别更改为error_reporting(E_ALL | E_STRICT);我正面临此错误.我可以避免使用此错误,isset()但代码看起来很难看!


所以我的问题是:如果我回到正常的错误报告设置怎么办?知道某些事情尚未定义真的很重要吗?因为它在没有通知错误的情况下正常运行.

因为我有+10输入,我得到它们:

$username = $_POST['username'];
Run Code Online (Sandbox Code Playgroud)

我还尝试在文件的顶部使用它预先定义变量.

$username = null;$username = 0;但他们没有工作.

谢谢.

Ins*_*ire 10

这很重要.错误减慢了PHP的速度,你真的应该设计你的应用程序不要抛出错误.在PHP愉快地继续执行脚本的情况下,许多其他语言将完全死亡.

在开发时,您的脚本不应该抛出任何错误(甚至是E_NOTICE).


hob*_*ave 7

我建议创建一个简单的函数来获取$ _POST值并为你做检查.

例如

<?php
function getPost($key)
{
    return isset($_POST[$key]) ? $_POST[$key] : null;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

显然OP不清楚如何使用它:

$username = getPost('username');
Run Code Online (Sandbox Code Playgroud)

  • 对于丢失的密钥,最好返回null而不是false - 可能存在值为false的密钥. (3认同)
  • 我不推荐这个.如果缺少`$ _POST`,也许你想要抛出异常.重点是,变量应该单独检查. (2认同)