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