为了账号安全,请及时绑定邮箱和手机立即绑定

这种方法如何排除0?

这种方法如何排除0?

PHP
慕无忌1623718 2022-05-27 10:21:08
我有一个代码:public function getMinPrice() {        return array_reduce($this->getProduktLinks()->toArray(), function($lowest, $link) {            return min($lowest ?? $link->getPrice(), $link->getPrice());        });    }我想从其中排除记录price = 0。我该怎么做?
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

public function getMinPrice() {

    return array_reduce($this->getProduktLinks()->toArray(), function($lowest, $link) {

        if($link->getPrice() != 0 && $lowest != 0){

            return min($lowest ?? $link->getPrice(), $link->getPrice());

        }

   });

}


查看完整回答
反对 回复 2022-05-27
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

你可以在一行上做,但你冒着不可读的风险,所以我建议如下:


public function getMinPrice() {

    return array_reduce($this->getProduktLinks()->toArray(), function($lowest, $link) {

        $min = min($lowest ?? $link->getPrice(), $link->getPrice());

        return $min ?: max($lowest ?? $link->getPrice(), $link->getPrice());

    });

}

逻辑很简单,如果最低为假(即0),则返回另一个。但是,如果两者都为 0,则可以根据需要添加一些其他逻辑。它看起来像这样:


public function getMinPrice() {

    return array_reduce($this->getProduktLinks()->toArray(), function($lowest, $link) {

        $min = min($lowest ?? $link->getPrice(), $link->getPrice());

        return ($min ?: max($lowest ?? $link->getPrice(), $link->getPrice())) ?: "some other value";

    });

}


查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号