如何在PHP中编写以下布尔表达式:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
或
if($var==TRUE){
$foo = "bar";
}else{
$foo = "";
}
或
$foo = ($var==TRUE) ? "bar": "";
答案 0 :(得分:8)
首先,true
不是一个常量,它是一个标记,所以请不要大写它(我知道有些标准会这样做,但我认为这会混淆意思)......
其次,您不需要$var == true
内的冗余if
比较。它与if ($var) {
完全相同(对于双==
比较。相同的比较===
需要明确)。
第三,我更喜欢预先初始化。所以:
$foo = '';
if ($var) {
$foo = 'one status';
} else {
$foo = 'another status';
}
如果您不需要else分支,只需将其删除即可。我更喜欢预初始化,因为它会强制您初始化变量,并且它会阻止您忘记在其中一个分支中初始化它的情况。此外,当您稍后返回阅读该功能时,它会为您提供类型提示...
对于像这样的简单分支,使用三元语法很好。如果有更复杂的逻辑,我会离开:
$foo = $var ? 'bar' : '';
答案 1 :(得分:5)
所有这些工作。这是偏好。我会考虑像第一个例子中那样初始化变量。但是对于这个简单的事情,第三种选择在我的书中很好。
此外,如果$ var只是一个布尔值,那么第三个就不必如此冗长:
$foo = $var ? "bar" : "";
答案 2 :(得分:1)
我喜欢第一个:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
因为它清晰,简洁,易于阅读。
答案 3 :(得分:1)
我更喜欢第一个(除了布尔值的冗余测试),因为它在语言中一致地工作,特别是那些需要在设置之前声明变量(并且可能代表它)的那些。
爪哇:
String foo = "";
if (var) {
foo = "Something";
}
JavaScript或JavaFX:
var foo = "";
if (var) {
foo = "Something";
}
等。
也可以使用第三种形式,但如果条件(或赋值)很复杂,则可读性稍差。
答案 4 :(得分:0)
非常重要。我喜欢第一个有很多elseif的东西,所以你知道变量总是被初始化。但这只是一个偏好问题。
与引号一样,我喜欢在php中使用单个引号。没有充分的理由:))
答案 5 :(得分:0)
正确的答案是,“它取决于”。在这种情况下,
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
}
通常有意义。
问问自己:“如果对我的代码一无所知的人读了它,对他有意义吗?还是她?”