我有条件:
if($about AND $desc)
{
if($about > $desc) {
$description = $about;
}
else {
$description = $desc;
}
}
else
{
if($about AND !$desc) {
$description = $about;
}
elseif (!$about AND $desc) {
$description = $desc;
}
else {
$description = 'No description';
}
}
对我而言似乎太大了。我认为它可以以某种方式缩短,但不知道如何...任何建议?
答案 0 :(得分:6)
检查$about
或$desc
是否真实,并使用三元运算符:
if ($about || $desc) {
$description = ($about > $desc ? $about : $desc);
} else {
$description = 'No description';
}
如果你真的希望缩短它(以及限制可读性,我不建议),你可以把整个事情变成三元:
$description = (($about || $desc) ? ($about > $desc ? $about : $desc) : 'No description');
答案 1 :(得分:1)
或制作一个函数并使用return
function getDescription($about, $desc) {
if (!$about && !$desc)
return 'No description';
if ($about > $desc)
return $about;
return $desc;
}
或
$description = function($about, $desc) {
if (!$about && !$desc)
return 'No description';
if ($about > $desc)
return $about;
return $desc;
};
答案 2 :(得分:1)
完善@ h2ooooooo提供的答案,您可以将($about > $desc ? $about : $desc)
替换为max($about, $desc)
来进一步简化,以获得此结果:
$description = ($about || $desc) ? max($about, $desc) : 'No description';
因为max()
可以比较任何事情,所以你可以更简单,比如:
$decription = max($about, $desc) ?: 'No description';