首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在启用E_NOTICES的情况下编写更好的代码?

如何在启用E_NOTICES的情况下编写更好的代码?
EN

Stack Overflow用户
提问于 2010-04-23 23:51:55
回答 2查看 127关注 0票数 2

我更喜欢在启用E_NOTICES的情况下进行开发,但在处理数组索引时,我经常不得不编写过多、过于冗长的代码。如何在启用E_NOTICES的情况下用更少的代码编写此代码。

禁止显示通知

代码语言:javascript
复制
if ($_REQUEST['some_key'] == 'bob')
{
}

没有隐藏的通知

代码语言:javascript
复制
if (array_key_exists('some_key', $_REQUEST) && $_REQUEST['some_key'] == 'bob')
{
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-23 23:56:30

对于这类事情,我通常使用,而不是;这意味着使用如下所示:

代码语言:javascript
复制
if (isset($_REQUEST['some_key']) && $_REQUEST['some_key'] == 'bob')
{
}

几个不同之处:

  • isset是一种语言构造,而不是函数--而且它的速度更快(无函数调用)
  • 请注意,如果数据为nullisset将返回falsearray_key_exists将返回true
    • ,但这通常不是问题,特别是在处理GET/POST and时

如果necessary,

  • it shorter to
    • (少写几个字符),你可以使用像if (isset($_REQUEST['a'], $_REQUEST['b'], $_REQUEST['c'])这样的东西

票数 3
EN

Stack Overflow用户

发布于 2010-04-24 00:08:44

最简单的解决方法是使用@进行错误抑制:

代码语言:javascript
复制
if (@$_REQUEST['some_key'] == 'bob') {}

但是,如果您在每次页面加载中使用它超过一次或两次,这可能会非常慢。

另一种解决方案是通过引用赋值你的未知数(尽管我不能100%确定这是否适用于像$_REQUEST这样的超全局变量):

代码语言:javascript
复制
$some_key =& $_REQUEST['some_key'];
if ($some_key == 'bob') {}

一般来说,我只是像帕斯卡说的那样使用isset

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2699983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档