如何存储循环中的值和 return laravel 8 中的紧凑值。我 return 时只有一个值

How to store values from a loop and return a compact values in laravel 8. i got only one values when i return

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

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 我只得到一个值

您必须在 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时,它直接returns它找到的第一个值,而echo只会输出。 但是 return 必须在循环之后的最后。