4

我习惯于将 PHP 中的变量初始化为 false,然后稍后对其应用任何(字符串、布尔值、浮点数)值。

你认为哪个更好?

$name = false;
if (condition == true) {
    $name = $something_else;
}

if ($name) {  …do something…  }

对比

$name ='';
if (condition == true) {
    $name = $something_else;
}

if (!empty($name)) {  …do something…  }

您认为哪个可能会提供更好的性能?你会使用哪种方法?

4

5 回答 5

5

乍一看 - 你$condition==true是没有意义的,因为$condition它已经足够好了。

第二 - 如果你不确定什么类型是可变的,但你想初始化它(这确实是一个好习惯),使用null- 因为false指向某些数据类型 - bool 数据类型,虽然它不正确和人阅读您的代码的人可能会感到困惑。

于 2013-11-11T09:44:28.060 回答
3

这两个值都有''意义false

我建议使用null作为默认值。因为这实际上并不(也不应该)“意味着”任何事情。

这也将允许您进行测试is_null($var)以确保某些东西实际上为您的变量设置了一个值。

于 2013-11-11T09:44:21.233 回答
1

看看这里Basic php benchmarks。我通常使用null。这里也必须知道。

于 2013-11-11T09:49:55.457 回答
0

那么我认为给它布尔值更好。当你比较在一个非常强大的系统上运行的代码时,它不会有太大的不同。

但是当涉及到系统性能时,这一切都取决于您使用的数据类型的大小。boolean 使用 1 位数据。所以,使用起来更方便,速度也更快。

添加到其他答案,最好使用 null。

于 2013-11-11T09:47:17.597 回答
0

我认为无论您的上述两种选择如何,if 语句的性能都取决于其条件是否具有可预测的模式,即BRANCH PREDICTION。如果条件总是真或总是假,即如果它是可预测的,处理器中的分支预测逻辑将拾取该模式。另一方面,如果处理器无法预测条件,则可能会影响性能。

在谈论您的代码时,我能想到的优化是

  $name = false;// i dont think u should predeclare the 'name' variable 
   //as it is dependent on the if condition.so if the condition fails then
  //the $name will be   of no use. 
    if (condition) {
        $name = $something_else;
    }

    if ($name) //this condition will only be executed 
   // when $name is true so why predeclare $name.
    {  …do something…  
    }
于 2013-11-11T09:50:39.843 回答