未定义索引:php脚本中出现错误
在php页面中,我有以下代码:未定义索引:php脚本中出现错误,php,request,Php,Request,在php页面中,我有以下代码: if($_REQUEST['c']!="") // I get error on this line itself. Why? { $pidis=(int)($_REQUEST['c']); } 我不断得到未定义的索引错误 在谷歌搜索中,我了解到,如果一个页面没有参数(URL中),我们试图访问的,我们可以得到这个错误/警告。我认为,如果URL中没有定义参数,它应该返回空值,而不是给出错误/警告消息 我知道可以通过添加 错误报告(E\u所有^E\u通知) 但我不
if($_REQUEST['c']!="") // I get error on this line itself. Why?
{
$pidis=(int)($_REQUEST['c']);
}
我不断得到未定义的索引错误
在谷歌搜索中,我了解到,如果一个页面没有参数(URL中),我们试图访问的,我们可以得到这个错误/警告。我认为,如果URL中没有定义参数,它应该返回空值,而不是给出错误/警告消息
我知道可以通过添加
错误报告(E\u所有^E\u通知)代码>
但我不想这样做
这个页面在我们公司的web服务器上工作正常,但在我们的客户机web服务器上不工作
为什么会这样
如何解决此问题?用于首先测试它是否存在。出现此错误是因为您试图将$\u REQUEST['c']
与$\u REQUEST['c']
不存在时的内容进行比较
解决方案是在比较之前使用。这将删除警告,因为如果$\u请求['c']
不存在,则不会进行比较
if(isset($_REQUEST['c']) && $_REQUEST['c']!="")
{
$pidis=(int)($_REQUEST['c']);
}
这是一个E_通知
级别错误,您的级别将影响错误是否显示。您的客户端服务器已打开E_NOTICE
级别的错误报告,这就是它显示在那里的原因
始终使用E_ALL
进行开发是一个好主意,这样您就可以在将代码移动到其他服务器之前捕获此类错误。当您尝试使用不存在的变量或不存在的数组元素时,PHP会发出一个通知(这不是一个错误:它只是一个通知)
if(isset($_REQUEST['c']) && $_REQUEST['c']!="")
{
$pidis=(int)($_REQUEST['c']);
}
这只是为了帮助您,您不应该掩盖这些注意事项:它们是来帮助您的——例如,帮助您检测变量名中的拼写错误
在使用该数组索引之前,如果它不总是存在,则应使用以下方法测试它是否存在:
您还可以使用:
这两种方法的区别在于isset()
还检查变量的值是否为null
。如果它是null
,则isset
返回false
,而array\u key\u exists()
如果键存在(无论是哪个值),则始终返回true
。例如:
根据上下文,区分这一点很重要。在您的情况下,我认为这无关紧要,因为(我猜)请求参数永远不会为null
(除非手动覆盖)。另一个解决方案是使用以下方法:
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : '';
如果希望返回非空的值,也可以在最终的单引号集中放置默认值,例如
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 'Default Value';
或返回不同的变量类型,例如整数:
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 34;
清洁方式可以是:
$pidis=$\u请求['c']??无效的
这与检查isset request相同,但更短。标记not request
为false我实际键入的是:$\u request
。为什么在我们发布时,$\u REQUEST
标记会转换为“notREQUEST
”?
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 34;