下面的布尔表达式应该如何用 PHP 编写:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
或者
if($var==TRUE){
$foo = "bar";
}else{
$foo = "";
}
或者
$foo = ($var==TRUE) ? "bar": "";
下面的布尔表达式应该如何用 PHP 编写:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
或者
if($var==TRUE){
$foo = "bar";
}else{
$foo = "";
}
或者
$foo = ($var==TRUE) ? "bar": "";
首先,true
它不是一个常量,它是一个标记,所以请不要大写它(我知道有些标准会这样做,但我认为它会混淆含义)......
其次,您不需要$var == true
在if
. 它与if ($var) {
(对于双重==
比较。相同的比较===
需要明确)完全相同。
第三,我更喜欢预初始化。所以:
$foo = '';
if ($var) {
$foo = 'one status';
} else {
$foo = 'another status';
}
如果您不需要 else 分支,只需将其删除。我更喜欢预初始化,因为它会强制您初始化变量,并且可以防止您忘记在其中一个分支中初始化它的情况。另外,当您稍后返回阅读该函数时,它会为您提供类型提示......
对于这样一个简单的分支,使用三元语法就可以了。如果有更复杂的逻辑,我会远离:
$foo = $var ? 'bar' : '';
所有这些工作。这是偏好。我会考虑像在第一个示例中那样首先初始化变量。但是对于这么简单的事情,第三个选项在我的书中很好。
此外,如果 $var 只是一个布尔值,则第三个不必如此冗长:
$foo = $var ? "bar" : "";
我喜欢第一个:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
因为它清晰、简洁、易于阅读。
我更喜欢第一个(布尔值的冗余测试除外),因为它可以在各种语言中始终如一地工作,尤其是那些需要在设置变量之前声明变量(并可能对其进行典型化)的语言。
爪哇:
String foo = "";
if (var) {
foo = "Something";
}
JavaScript 或 JavaFX:
var foo = "";
if (var) {
foo = "Something";
}
等等
。也可以使用第三种形式,但如果条件(或赋值)很复杂,它的可读性就会降低。
没关系。当有很多 elseif 时,我喜欢第一个,这样你就知道变量总是被初始化的。但这实际上只是一个偏好问题。
像引号一样,我喜欢在 php 中使用单个引号。没有充分的理由:)
通常情况下,正确的答案是“视情况而定”。在这种情况下,
if ($var==TRUE) $foo = "bar";
else $foo = "";
很清楚。但是你的背景是什么?
一般来说,第三个运算符,你的第三个选项,应该非常小心地使用,因为它很容易变得难以阅读。
但是要考虑你希望你的代码是什么意思,而不是它的作用。您想将您的 $foo 设置为“正常”值然后覆盖它吗?还是您想设置取决于 $var 是什么?
我觉得改变有用的东西,不是你直接问的,而是类似的,是这个,来自
function func() {
...
if ($condition) {
do plenty
of things
}
else {
do plenty
of things
}
}
那,我通常喜欢改为:
function func() {
...
if ($condition) {
do plenty
of things
return;
}
do plenty
of things
}
这通常是有道理的。
问问自己:“如果对我的代码一无所知的人读了它,对他或她有意义吗?”