我试图理解在表单处理期间是否需要isset时,如果没有传递任何值,则检查$ _REQUEST [" input_name"]并且它不会为此哭泣而且如果你是php则不会抛出错误试图访问不存在的数组项....我可以使用if($ _ REQUEST [" input_name"]).. 那么“空”怎么样?即使在那些情况下我也可以使用if()

THnks

有帮助吗?

解决方案

if(<*>

如果“input_name”,

将抛出通知(错误)不存在,所以建议使用isset()。

REQUEST["input_name"])
如果“input_name”,

将抛出通知(错误)不存在,所以建议使用isset()。

其他提示

除非您正在测试表单,否则我不建议使用 $ _ REQUEST 超全局来捕获表单输入。除非你有充分的理由,否则请使用 $ _ GET $ _ POST

此外, isset() array_key_exists()都对数组键执行相同的操作,尽管 array_key_exists()更清晰在数组上下文中。

我建议使用:

error_reporting(E_ALL); //E_ALL - All errors and warnings

在您的开发环境中,因为它可以揭示可能应用更好的实践的地方,例如在使用变量之前无法声明变量等等。

有不同类型的错误级别。检查未设置的变量只会引发通知。您的错误报告可能会被忽略。最好的做法是在想要检查变量是否已设置时始终使用 isset ,尽管它确实有它的陷阱

仅执行上述操作,例如,如果 $ _ REQUEST [&quot; input_name&quot;] 是字符串“0”,则它将评估为false。使用$ _REQUEST开始也不是一个好主意,因为它可能会受到像cookies这样的东西的影响而且它通常是糟糕架构的代码味道。

使用$ _REQUEST几乎是一个黑客。你应该使用$ _POST或$ _GET(取决于你在做什么),你应该使用isset()。

我读过的每本关于PHP的书似乎都是这样说的。

通常,至少在测试中,使用error_reporting(E_ALL)在php.ini或代码中设置错误报告到E_ALL(所有错误和警告); (考虑添加E_STRICT 。)事先得到一个关于错误的明显的通知,而不是让你有些微不足道的错误,直到以后才能发现。

避免使用$ _REQUEST,这太模糊了(包括GET,POST和cookie值),并使用$ _POST或$ _GET,如果这些是你真正的意思,并检查 isset($ _ POST [&QUOT; input_name&QUOT;])

简短回答是“是”。 :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top