0

我有这个变量。

$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;
            }
        }
    }

但我觉得这段代码不好。
有什么建议可以用上面的条件编写更好的代码吗?

4

3 回答 3

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

于 2012-04-10T18:09:02.530 回答
2
if( $value->id == $productId){
    $return = ($value->datePurchaseEnd == NULL || $value->datePurchaseEnd > mktime());
    break;
}

或者

 $return = $value->id == $productId && ($value->datePurchaseEnd == NULL || $value->datePurchaseEnd > mktime());
 break;
于 2012-04-10T18:11:08.873 回答
0

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

return $value->id == $productId && ($value->datePurchaseEnd == null || $value->datePurchaseEnd > mktime())
于 2012-04-10T18:14:41.790 回答