清理条件代码

时间:2012-04-10 18:07:24

标签: php conditional conditional-operator

我有这个变量。

$productId = 2; // Testing ID
$value->id; // Contains INT
$value->datePurchaseEnd; // Contains UNIXTIME or NULL

我想要的条件。 if ($value->id == $productId) return true;

但如果$value->datePurchaseEnd;不是NULL,那么还要将其与当前时间进行比较,并且必须大于当前时间才能返回TRUE;

现在这是我做的代码:

if( $value->id == $productId){
        if( $value->datePurchaseEnd == NULL ){
            $return = TRUE; break;
        }else{
            if( $value->datePurchaseEnd > mktime() ){
                $return = TRUE; break;
            }
        }
    }

但我觉得这段代码不好 有没有建议用上面的条件制作更好的代码?

3 个答案:

答案 0 :(得分:6)

我会说

if( ($value->id == $productId) && ($value->datePurchaseEnd == NULL || $value->datePurchaseEnd > mktime() )) {
        $return = true;
        break;
}

if($value->id == $productId) {
    if($value->datePurchaseEnd == NULL || $value->datePurchaseEnd > mktime()) {
        $return = true;
        break;
    }
}

取决于条件是否需要else

答案 1 :(得分:2)

if( $value->id == $productId){
    $return = ($value->datePurchaseEnd == NULL || $value->datePurchaseEnd > mktime());
    break;
}

 $return = $value->id == $productId && ($value->datePurchaseEnd == NULL || $value->datePurchaseEnd > mktime());
 break;

答案 2 :(得分:0)

如果您的代码不在循环中,我更喜欢内联条件:

return $value->id == $productId && ($value->datePurchaseEnd == null || $value->datePurchaseEnd > mktime())