【问题标题】:How to store values from a loop and return a compact values in laravel 8. i got only one values when i return如何存储循环中的值并在 laravel 8 中返回一个紧凑的值。我返回时只有一个值
【发布时间】:2021-10-05 18:05:49
【问题描述】:

这是控制器中的代码,我想获得一个紧凑的值,但它只返回一个值

public function index()
    {
       
        $take_data = Product::whereNotNull('expiry_date')->select('expiry_date','name')->get(); 
        $count = count($take_data);
        $take_today_date = date('Y-m-d');
      
      for($i=0; $i < $count; $i++)
    
       {
        
         $expiry_date = strtotime($take_data[$i]->expiry_date);
         $today_date = strtotime(date('Y-m-d'));
        
 
        if($expiry_date < $today_date)
     {
        $result = abs($today_date - $expiry_date); 
        $years = floor( $result / (365*60*60*24));
        $months = floor(( $result - $years * 365*60*60*24) /(30*60*60*24));
        $days = $take_data[$i]->name." : Expired ". floor(( $result - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24))." days ago. ";   
          
       return $days;
     }
    }        
  }

当我使用 echo 而不是 return 时,我得到了所有值,但是当我输入 return 时,我只得到一个值

【问题讨论】:

  • 好吧,您想将return 排除在外。另外,您可能想要一个数组,所以$days[] = ....

标签: php model-view-controller laravel-8


【解决方案1】:

您必须在 for 循环之前创建一个数组 $days 并在循环中为其添加值。 像这样

    public function index()
    {  
        $take_data = Product::whereNotNull('expiry_date')->select('expiry_date','name')->get(); 
        $count = count($take_data);
        $take_today_date = date('Y-m-d');
        $days = [];

        for($i=0; $i < $count; $i++) {
            $expiry_date = strtotime($take_data[$i]->expiry_date);
            $today_date = strtotime(date('Y-m-d'));
 
            if($expiry_date < $today_date) {
                $result = abs($today_date - $expiry_date); 
                $years = floor( $result / (365*60*60*24));
                $months = floor(( $result - $years * 365*60*60*24) /(30*60*60*24));
                $days[] = $take_data[$i]->name." : Expired ". floor(( $result - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24))." days ago. ";   
            }
        }

        return $days;
    }

因为有return的时候直接返回找到的第一个值,而echo只是输出。 但是返回必须在最后,在循环之后。

【讨论】:

    猜你喜欢
    • 2017-04-03
    • 2019-02-06
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2017-11-16
    • 2015-02-01
    相关资源
    最近更新 更多