PHP首先将字符串初始化为布尔值

时间:2013-11-11 09:40:53

标签: php optimization

我习惯于将PHP中的变量初始化为false,然后再将(string,boolean,float)值应用于它。

你认为哪个更好?

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

if ($name) {  …do something…  }

VS

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

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

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

5 个答案:

答案 0 :(得分:5)

乍一看 - 由于$condition==true足够好,您的$condition毫无意义。

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

答案 1 :(得分:3)

''这两个值false都有意义。

我建议使用null作为默认值。因为那实际上没有(也不应该)“意味着”任何东西。

这也允许您测试is_null($var)以确保实际为变量设置值。

答案 2 :(得分:1)

看看Basic php benchmarks。我通常使用null。必须知道here

答案 3 :(得分:0)

我认为给它布尔值更好。比较在非常强大的系统上运行的代码时,它没有多大区别。

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

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

答案 4 :(得分: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…  
    }