如果活动有可接受的优惠,请检查功能?

时间:2017-01-03 10:58:42

标签: php

我需要检查一个事件是否有要约,我已经完成了这个功能

public function hasAcceptedOffer()
{
    foreach ($this->offers as $offer) {

        if( $offer->accepted == 1 ){
        return true;

    } else {

        return false;

    }
}

但我认为这可以做得更好,更优化。因为如果有很多优惠我不想全部通过。我想要的是,如果一个函数找到一个被接受的商品,它应该停止进一步的迭代。

2 个答案:

答案 0 :(得分:3)

我觉得你在这里做得很好。

您可以通过执行此操作删除其他部分

public function hasAcceptedOffer()
{
    foreach ($this->offers as $offer) {

        if( $offer->accepted == 1 ){
           return true;

        }
    }
    return false;
 }

答案 1 :(得分:1)

假设您只关心任何提议是否被接受,而您不需要知道哪一个,我喜欢这样做:

public function hasAcceptedOffer()
{
    foreach($this->offers as $offer) {
        if($offer->accepted !== 1)
            continue;

        return true;
    }

    return false;
}

循环的每次迭代都会快速跳到下一个迭代,如果它与你想要的标准不匹配,它会在找到第一个阳性结果时立即返回并跳过处理其他结果(因为你不关心)如果没有找到匹配则返回false。

如果您想收集已接受的优惠,您可以这样修改:

public function getAcceptedOffers()
{
    $results = array();

    foreach($this->offers as $offer) {
        if($offer->accepted !== 1)
            continue;

        $results[] = $offer;
    }

    return $results;
}