有人可以帮我重新写一下:
public function allOutOfStockShows()
{
$out_of_stock_shows = 999;
foreach ($this->variants as $variant){
if (!$variant->out_of_stock_shows) { continue; }
if ($variant->out_of_stock_shows < $out_of_stock_shows) { $out_of_stock_shows = $variant->out_of_stock_shows; }
};
if ($out_of_stock_shows == 999) { return 'Out Of Stock'; }
return config('site.out_of_stock_shows')[$out_of_stock_shows]; // eg '2-3 days','3-5 days'
}
(整数)$ variant-&gt; out_of_stock_shows的值可以在0-12之间,所以我开始将'最高'数字作为我从空中拔出的数字 - 999 - 然后我开始拍摄较低的数字你可以看到价值。它有效,但感觉不对,我该怎么接近这个?
答案 0 :(得分:1)
也许你转换为数组并使用min()函数;
$out_of_stock_shows = array_map(
function( $item ) {
return $item->out_of_stock_shows;
}, $this->variants );
$out_of_stock_shows = min( array_filter( $out_of_stock_shows ) );
答案 1 :(得分:0)
谢谢大家 - 使用laravel的收藏品我删除了所有&#34; 0&#34;元素,对数组进行排序并查看数组顶部的内容:
public function allOutOfStockShows()
{
$variants = $this->variants->reject(function ($variant){
return $variant->out_of_stock_shows === 0;
})->sortBy('out_of_stock_shows');
if (isset($variants->first()->out_of_stock_shows)) {
return config('site.out_of_stock_shows')[$variants->first()->out_of_stock_shows];
}
return "Out Of Stock";
}