Php 哪条路更快?抑制@$请求[';x';]或通过isset($请求[';x';])时出错

Php 哪条路更快?抑制@$请求[';x';]或通过isset($请求[';x';])时出错,php,error-handling,isset,Php,Error Handling,Isset,使用isset是一个额外的函数调用,但仍然是推荐的做法。 在下面的特定示例中,什么更快 我感觉第一个会更快。否则,有人能解释为什么第二个会更快吗?如果是这样的话 if (@$_REQUEST['x']=='1'): define ('X','1'); else: define ('X','0'); endif; //or if (isset($_REQUEST['x'])): if ($_REQUEST['x']=='1'): define ('X'

使用isset是一个额外的函数调用,但仍然是推荐的做法。 在下面的特定示例中,什么更快

我感觉第一个会更快。否则,有人能解释为什么第二个会更快吗?如果是这样的话

if (@$_REQUEST['x']=='1'):
    define ('X','1'); 
else:
    define ('X','0');
endif;

//or

if (isset($_REQUEST['x'])):
    if ($_REQUEST['x']=='1'):
        define ('X','1');
    else:
        define ('X','0');
    endif;
else:
    define ('X','0');
endif;

最佳实践要求避免使用抑制运算符,因此请使用isset()。如果你对微优化足够关注,考虑到差异,你应该知道PHP仍然处理被抑制的错误,即使它们没有被显示。理论上由@获得的任何优化都可能因错误处理而丢失


最佳实践还规定了从外部来源获取输入的特殊性。我还建议选择$\u POST或$\u GET作为备选方案

抑制错误是个坏主意。即使速度更快,也不要这样做。谢谢迈克。我知道推荐的方法是选择2。我确实指出了这一点。这个问题与PHP的工作方式有关。。还是第二种(也是更好的)更快的方法吗?问题就在于这个。它可以更快,是的。因为PHP不必在每次迭代时抛出通知或警告,然后抑制错误。
PHP仍然处理抑制的错误,即使它们没有显示出来。@理论上获得的任何优化都可能会因错误处理而丢失。
将为您提供正确答案。