2 回答

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

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";
});
}
- 2 回答
- 0 关注
- 186 浏览
添加回答
举报