首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数组中找到最低的数字,但跳过零

在数组中找到最低的数字,但跳过零
EN

Stack Overflow用户
提问于 2016-06-20 17:09:52
回答 2查看 42关注 0票数 0

有人能帮我改写一下这个吗?

代码语言:javascript
复制
 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> out _stock_shows的值可以从0到12不等,所以我开始使用“最高”数字作为我从air - 999中提取出来的一个数字,然后我选择一个较低的值,正如您所看到的。它能工作,但感觉不对,我该如何接近它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-20 17:18:52

也许你可以转换成数组,使用分钟()函数;

代码语言:javascript
复制
$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
EN

Stack Overflow用户

发布于 2016-06-20 17:30:57

谢谢各位--使用laravel的集合,我删除了所有"0“元素,对数组进行了排序,并查看了数组顶部的内容:

代码语言:javascript
复制
 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";

 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37928172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档