在php页面中,我有以下代码:
if($_REQUEST['c']!="") // I get error on this line itself. Why?
{
$pidis=(int)($_REQUEST['c']);
}
Run Code Online (Sandbox Code Playgroud)
我一直得到Undefined索引错误.
在谷歌搜索我设法理解,如果页面访问没有我们试图访问的参数(在URL中),我们可以得到此错误/警告.我相信如果没有在URL中定义参数,它应该只返回空而不是给出错误/警告消息.
我知道可以通过添加来抑制错误和警告
error_reporting(E_ALL ^ E_NOTICE);
但我不想这样做.
这个页面在我们公司的Web服务器上工作得很好,但在我们的客户端Web服务器上不起作用.
为什么会这样?
如何解决这个问题呢?
zom*_*bat 28
您收到该错误是因为您试图与不存在的$_REQUEST['c']东西进行比较$_REQUEST['c'].
解决方案是在比较之前使用isset().这将删除警告,因为如果$_REQUEST['c']不存在则不会进行比较.
if(isset($_REQUEST['c']) && $_REQUEST['c']!="")
{
$pidis=(int)($_REQUEST['c']);
}
Run Code Online (Sandbox Code Playgroud)
这是一个E_NOTICE级别错误,您的错误报告级别将影响错误是否显示.您的客户端服务器已E_NOTICE打开级别错误报告,这就是它出现的原因.
总是开发使用是一个好主意,E_ALL以便在将代码移动到其他服务器之前捕获此类错误.
另一种解决方案是使用以下内容:
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : '';
Run Code Online (Sandbox Code Playgroud)
如果您希望通过在最终的单引号集中放置默认值,也可以返回非空值,例如
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 'Default Value';
Run Code Online (Sandbox Code Playgroud)
或返回不同的变量类型,例如整数:
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 34;
Run Code Online (Sandbox Code Playgroud)