如何存储循环中的值和 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 必须在循环之后的最后。
这是控制器中的代码,我想获得一个紧凑的值,但它 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 必须在循环之后的最后。