关于简化 PHP 语句的建议
Advise on simplifying a PHP statement
我是 PHP 的新手,正在为 Joomla K2 项目布局编写模板文件。
我配置了一个 'extra field' $extrafields[15]
,输出为 "Yes"、"No" 或“”。 $extrafields[16]
是一个文本字符串。
我有这段代码,它可以工作,但我希望得到有关如何简化它的建议,因为我知道它可能有点粗糙!
if (!empty($extrafields[15])):
if ($extrafields[15] == "Yes") {
echo "<span class=sgl-bold>Sponsored by: </span>";
}
if ($extrafields[15] == "Yes"):
if (!empty($extrafields[16])):
echo $extrafields[16];
endif;
echo "<br>";
endif;
endif;
if (@$extrafields[15] == "Yes") {
echo "<span class=sgl-bold>Sponsored by: </span>";
echo @$extrafields[16];
echo "<br>";
}
我倾向于做这样的事情:
if(!empty($extrafields[15]) && !empty($extrafields[16])){
if($extrafields[15] == "Yes"){
echo "<span class=sgl-bold>Sponsored by: </span>";
echo $extrafields[16];
echo "<br>";
} //endif not empty
} //endif yes
您可以通过一些简单的调整使您的代码更加简洁:
- 尽可能去掉多余的 if 子句,
- 在有意义的地方组合 if 子句条件,并且
- 不要使用 alternative syntax 控制结构来减少噪音。
以下代码片段保留了与您最初尝试相同的功能,但恕我直言,它更易于理解。
if (!empty($extrafields[15]) && 'Yes' === $extrafields[15]) {
echo '<span class=sgl-bold>Sponsored by: </span>';
if (!empty($extrafields[16])) {
echo $extrafields[16];
}
echo '<br>';
}
也就是说,从上下文来看,您可能想要使用此处发布的 BigScar。
为了让这段代码更容易理解,您应该考虑处理数据结构(尽管我认为这是 Joomla 强加给您的):
- 而不是像
$extrafields[16]
这样的数字数组中的值,使用像 $showSponsor
或类似的说话变量名称,并且
- 使用布尔值
true
、false
和 null
而不是 'Yes'
、'No' 和 ''
的字符串值。
记住:
There are only two hard things in Computer Science: cache invalidation and naming things.
我是 PHP 的新手,正在为 Joomla K2 项目布局编写模板文件。
我配置了一个 'extra field' $extrafields[15]
,输出为 "Yes"、"No" 或“”。 $extrafields[16]
是一个文本字符串。
我有这段代码,它可以工作,但我希望得到有关如何简化它的建议,因为我知道它可能有点粗糙!
if (!empty($extrafields[15])):
if ($extrafields[15] == "Yes") {
echo "<span class=sgl-bold>Sponsored by: </span>";
}
if ($extrafields[15] == "Yes"):
if (!empty($extrafields[16])):
echo $extrafields[16];
endif;
echo "<br>";
endif;
endif;
if (@$extrafields[15] == "Yes") {
echo "<span class=sgl-bold>Sponsored by: </span>";
echo @$extrafields[16];
echo "<br>";
}
我倾向于做这样的事情:
if(!empty($extrafields[15]) && !empty($extrafields[16])){
if($extrafields[15] == "Yes"){
echo "<span class=sgl-bold>Sponsored by: </span>";
echo $extrafields[16];
echo "<br>";
} //endif not empty
} //endif yes
您可以通过一些简单的调整使您的代码更加简洁:
- 尽可能去掉多余的 if 子句,
- 在有意义的地方组合 if 子句条件,并且
- 不要使用 alternative syntax 控制结构来减少噪音。
以下代码片段保留了与您最初尝试相同的功能,但恕我直言,它更易于理解。
if (!empty($extrafields[15]) && 'Yes' === $extrafields[15]) {
echo '<span class=sgl-bold>Sponsored by: </span>';
if (!empty($extrafields[16])) {
echo $extrafields[16];
}
echo '<br>';
}
也就是说,从上下文来看,您可能想要使用此处发布的
为了让这段代码更容易理解,您应该考虑处理数据结构(尽管我认为这是 Joomla 强加给您的):
- 而不是像
$extrafields[16]
这样的数字数组中的值,使用像$showSponsor
或类似的说话变量名称,并且 - 使用布尔值
true
、false
和null
而不是'Yes'
、'No' 和''
的字符串值。
记住:
There are only two hard things in Computer Science: cache invalidation and naming things.