【问题标题】:Php: if or elsePHP:如果或否则
【发布时间】:2015-12-01 08:50:35
【问题描述】:

想象一下,您有一个名为 $varName 的变量。它可以采用以下两个值之一:“aaa”或“bbb”。那么,哪种说法是最佳的,为什么?

1)

if ($varName === 'aaa') {
/* Code for 'aaa' */
} else {
/* Code for 'bbb' */
}

2)

if ($varName === 'bbb') {
/* Code for 'bbb' */
} else {
/* Code for 'aaa' */
}

3)

if ($varName == 'aaa') {
/* Code for 'aaa' */
} else {
/* Code for 'bbb' */
}

4)

if ($varName == 'bbb') {
/* Code for 'bbb' */
} else {
/* Code for 'aaa' */
}

UPD:变量取 'aaa' 值的频率高于 'bbb'

【问题讨论】:

  • 我觉得我在这里做一些学校作业,哈哈。 1 - 因为 === 匹配 var 的值和类型,尽管由于 PHP 松散类型,所有 4 个答案都可以工作!
  • @mic 抱歉,请参阅 UPD)
  • 我是否正确地阅读了那句话,'aaa' 会比 'bbb' 更频繁地设置?

标签: php if-statement conditional-statements


【解决方案1】:

如果您确定 $varName 更频繁地获取(字符串)“aaa”,那么选项 (1) 将是最佳选择,原因有两个:

  1. 运算符“===”不转换数据。详情请参阅this answer
  2. 代码将不那么频繁地进入 else 部分。

附言。性能差异微不足道,更多的是关于可读性。

【讨论】:

  • 不知道 PHP 内部结构,我相信,除非方法在“隐式 then”的最后一个退出,否则跳转到 else 代码将得到完全相同的结果。为什么:条件为真,继续流程不跳转,但跳转else代码,如果为假,直接跳转“隐式then”代码到else,但最后不跳转。因此,使用 if 时总是会发生跳转,唯一的区别是 何时 发生跳转。可能是这被破坏了,例如优化。所以(1)和(2)应该是等价的。
猜你喜欢
  • 2011-09-20
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多