这种方法如何排除0?

我有一个代码:


public function getMinPrice() {

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

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

        });

    }

我想从其中排除记录price = 0。我该怎么做?


慕无忌1623718
浏览 187回答 2
2回答

一只名叫tom的猫

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());        }   });}

泛舟湖上清波郎朗

你可以在一行上做,但你冒着不可读的风险,所以我建议如下: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";    });}
打开App,查看更多内容
随时随地看视频慕课网APP