未定义索引: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通知) 但我不

在php页面中,我有以下代码:

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
标记会转换为“not
REQUEST
”?
$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 34;