许多PHP开发人员编写以下条件语句:
if (isset($_POST['action']) and $_POST['action'] == 'someValue') {
something();
}
编写此条件语句有什么用处?
当我看到它时,似乎$_POST['action'] == 'someValue'
暗示isset($_POST['action'] == TRUE
。
因此,以下条件语句似乎也会这样做:
if ($_POST['action'] == 'someValue') {
something();
}
答案 0 :(得分:1)
如果使用未定义的变量或索引,PHP会发出通知。
该检查是为了防止它。
答案 1 :(得分:1)
如果数组中的某个键不存在,PHP将触发访问它的通知。所以它并不多余,但如果显示通知则取决于您的设置。
答案 2 :(得分:1)
如果您只是致电:
if ($_POST['action'] == 'someValue') {
something();
}
且$_POST["action"]
未设置,则默认的PHP行为是抱怨undefined index
,这将导致direct string output
。
现在考虑一下你的PHP请求是否都是关于将JSON发送回客户端...你的JSON将是malformed one
。
另一个问题,请考虑以下事项:
if ($_POST['action'] == 'someValue') {
something();
}
...
header("Location: foo.php");
很抱歉,由于您在标题前面发出undefined index
的通知,这是不可能的。它不起作用,因为PHP的默认行为(考虑错误报告为ON)是以字符串格式吐出警告,从而弄乱了脚本的流程。
当然,你可以用这个来解决这些错误:
if (@$_POST['action'] == 'someValue') {
something();
}
但这是一个同样糟糕的做法,它不会使程序更好,但更慢,更难捕捉到错误。