我更喜欢在启用E_NOTICES的情况下进行开发,但在处理数组索引时,我经常不得不编写过多、过于冗长的代码。如何在启用E_NOTICES的情况下用更少的代码编写此代码。
禁止显示通知
if ($_REQUEST['some_key'] == 'bob')
{
}没有隐藏的通知
if (array_key_exists('some_key', $_REQUEST) && $_REQUEST['some_key'] == 'bob')
{
}发布于 2010-04-23 23:56:30
对于这类事情,我通常使用,而不是;这意味着使用如下所示:
if (isset($_REQUEST['some_key']) && $_REQUEST['some_key'] == 'bob')
{
}几个不同之处:
isset是一种语言构造,而不是函数--而且它的速度更快(无函数调用)null,isset将返回false;array_key_exists将返回true
如果necessary,
if (isset($_REQUEST['a'], $_REQUEST['b'], $_REQUEST['c'])这样的东西
发布于 2010-04-24 00:08:44
最简单的解决方法是使用@进行错误抑制:
if (@$_REQUEST['some_key'] == 'bob') {}但是,如果您在每次页面加载中使用它超过一次或两次,这可能会非常慢。
另一种解决方案是通过引用赋值你的未知数(尽管我不能100%确定这是否适用于像$_REQUEST这样的超全局变量):
$some_key =& $_REQUEST['some_key'];
if ($some_key == 'bob') {}一般来说,我只是像帕斯卡说的那样使用isset。
https://stackoverflow.com/questions/2699983
复制相似问题