我习惯于将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… }
您认为哪个可以提供更好的性能?你会用哪种方法?
答案 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…
}