PHP速度:什么更快?if(isset($ foo))或if($ foo == true)

ear*_*ser 9 php optimization performance

我只是想优化我的代码.我需要使用数据库中的数据预填充表单,我需要检查变量是否存在以填充文本框(我不喜欢@错误隐藏).表单很长,然后我需要多次检查变量是否存在.

以下两个中哪个更快?

  • if (isset ($item))
  • if ($item_exists==true)

甚至

  • if ($item_exists===true)

Mar*_*rcx 27

随着for循环重复它千万次相同的脚本了:

  • if (isset ($item)) 2.25843787193
  • if ($item_exists==true) 6.25483512878
  • if ($item_exists===true) 5.99481105804

所以我可以说isset肯定更快.

  • 添加到数字游戏:无论哪种方式都是0.0000001秒.这意味着你必须在每页大约1,000,000次这样做才能成为用户会注意到的事情(假设用户会注意到0.1秒).简而言之,这种微观优化很少会产生影响. (2认同)
  • 这是一个与性能相关的问题和可怕的答案这些小事情与**优化没什么共同点**唯一的Pekka的答案是有道理的 (2认同)

Gum*_*mbo 11

在这种情况下,您不应该首先询问性能,而应该询问正确性.因为isset它的行为不像布尔值转换并且与true比较(参见类型比较表).特别值""(空字符串), array()(空数组), ,false,0"0"(0字符串)的处理方式不同.


Pek*_*ica 7

我确信会有性能差异; 我确定它已在某处进行了基准测试; 但我也确定它对于现实世界的目的来说根本不重要.任何可实现的增益都在这里以毫秒为单位,更重要的是代码的可读性,以及避免警告(无论是否输出,都会产生性能).

isset如果您在访问它时无法确定它是否已设置,则可能需要.===如果$item_exists始终是布尔值,则不应该进行类型安全比较,但它也不会有害.所以根据你的情况,你可能需要

if ((isset($item)) and ($item_exists === true))
Run Code Online (Sandbox Code Playgroud)