我不确定这是一个很好的问题,但这是我的问题。我有一个if
语句太长了,我想知道是否有其他类型的语法来缩短它:
if (($time1 <= $one_day)&&
($time2 <= $one_day)&&
($time3 <= $one_day)&&
($time4 <= $one_day)&&
($time5 <= $one_day)&&
($time1 != NULL)&&
($time2 != NULL)&&
($time3 != NULL)&&
($time4 != NULL)&&
($time5 != NULL)){
//do sometihng
}
这是一个例子,但我有一个类似的问题,最多可达..&&($time15 <= $one_day)
。
该陈述非常自我解释,$time1, $time2, etc
可以回空,所以我必须检查它们是否NULL
任何想法?
感谢
答案 0 :(得分:3)
你可以把常见的东西放在一个函数中:
function validate_time($time, $one_day) {
return $time <= $one_day && $time != NULL;
}
if (validate_time($time1, $one_day) &&
validate_time($time2, $one_day) &&
validate_time($time3, $one_day) &&
validate_time($time4, $one_day) &&
validate_time($time5, $one_day)) {
// do something
}
您可能希望重构代码并消除复制和删除的需要。粘贴那些支票。另一种完成工作的方法:
while (true) {
foreach (array($time1, $time2, $time3, $time4, $time5) as $time) {
if ($time > $one_day || $time == NULL) {
break 2;
}
}
// do something
break;
}
以上内容也可以放在一个函数中,这会使while循环和break
关键字变得冗余。然后返回break 2
替换。
答案 1 :(得分:2)
为变量使用数组会有所帮助。您可以迭代它们并检查。
答案 2 :(得分:1)
将时间放在一个数组中并使用for
循环来进行检查。
答案 3 :(得分:1)
不要使用15个相似但不同的变量,而应考虑使用数组。
答案 4 :(得分:1)
如果您必须(或想要)保留原始变量名称而不使用数组,这是一个很好的解决方案($ time1到$ time5):
$ok = true;
for ($i = 1; $i <= 5; $i++)
{
$var =& ${'time'.$i};
if ( ! ($var <= $one_day && $var != NULL))
{
$ok = false;
}
}
if ($ok)
{
//do something
}
答案 5 :(得分:0)
您可以将所有值设置为数组并使用For循环进行比较。
答案 6 :(得分:0)
功能化版本,有助于您重复使用。这类似于Lekensteyns代码。
$times = array(
'time',
'time',
'time',
'time',
'time',
);
function validateTime($checks, $limit)
{
foreach($checks as $check) {
if($check == null || $check > $limit) {
return false;
}
}
return true;
}
if(validateTime($times,$one_day) == true) {
//codey code.
}