1

当我检查 $_REQUEST["input_name"] 如果没有传递任何值时,我试图了解在表单处理期间是否需要 isset不存在的数组项....我可以使用 if($_REQUEST["input_name"]).. 即使在这些情况下我可以使用 if()

谢谢

4

5 回答 5

6

我不建议使用$_REQUEST超全局来捕获表单输入,除非您正在测试表单。使用$_GETor$_POST代替,除非你有充分的理由。

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

我建议使用:

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

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

于 2009-05-03T23:45:29.403 回答
5

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

只做你在上面做的事情,例如,如果$_REQUEST["input_name"]是字符串“0”,它将评估为假。此外,使用 $_REQUEST 开始也不是一个好主意,因为它可能会受到 cookie 之类的影响,并且通常是不良架构的代码气味。

于 2009-05-03T23:33:58.997 回答
4

使用 $_REQUEST 几乎是一种技巧。您应该使用 $_POST 或 $_GET(取决于您在做什么)并且应该使用 isset()。

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

于 2009-05-03T23:36:42.857 回答
3

通常,至少对于测试,在您的 php.ini 或使用 error_reporting(E_ALL) 的代码中将错误报告设置为 E_ALL(所有错误和警告);(也考虑添加 E_STRICT。)最好提前得到一个关于错误的明显通知,而不是让一些微妙的错误出现,直到以后才发现。

避免使用太模糊的 $_REQUEST(它包括 GET、POST 和 cookie 值),如果您真正的意思是这些,请使用 $_POST 或 $_GET,并检查isset($_POST["input_name"])

简短的回答是“是的”。:)

于 2009-05-04T00:37:48.390 回答
2
if($_REQUEST["input_name"])

如果“input_name”不存在,将抛出一个通知(错误),因此建议使用 isset()。

于 2009-05-03T23:33:28.043 回答