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


PHP Initialising strings as boolean first

我习惯于将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…  }

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

乍一看 - 你的$condition==true毫无意义,因为$condition已经足够了。

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

这两个值''因为false有意义。

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

这也将允许您测试is_null($var)以确保某些内容确实为您的变量设置了值。

看看这里 基本的 php 基准测试。我通常使用空。这里也必须知道。

好吧,

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

但是当涉及到系统性能时,这完全取决于您使用的数据类型的大小。 布尔值使用 1 位数据。因此,使用起来更方便,速度也更快。

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

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

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

  $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…  
    }