繁体   English   中英

计算给定月份的天数

[英]calculating no of days in given month

我有 LatestValuesDate 'Apr','May','Jun' 。我有几个月没有几天的数组。 如果LatestValuesDate可能我想显示number of days =61 如果LatestValuesDateJul我想显示number of days =91但现在我只有31

$month_days=array("Apr"=>"30", "May"=>"31", "Jun"=>"30", "Jul"=>"31", "Aug"=>"31", "Sep"=>"30", "Oct"=>"31", "Nov"=>"30", "Dec"=>"31", "Jan"=>"31", "Feb"=>"28", "Mar"=>"30");
$val='May';
$days1=0;
$noOfDays=$days1+$month_days[$val];

对于您的预期结果,您需要遍历数组并将值相加到一个变量中。 但是您必须在根据 $val 变量添加值后停止循环。 您可以使用以下代码来实现:

$month_days=array("Apr"=>"30", "May"=>"31", "Jun"=>"30", "Jul"=>"31", "Aug"=>"31", "Sep"=>"30", "Oct"=>"31", "Nov"=>"30", "Dec"=>"31", "Jan"=>"31", "Feb"=>"28", "Mar"=>"30");
    
$noOfDays = 0; 
$val='May';
    
foreach($month_days as $key=>$value){
  $noOfDays = $noOfDays + $value; 
      
  if($key == $val) 
    break;   
    
}
echo $noOfDays; 

注意:3 月在您的数组声明中的天数有误,它应该是 31。

我总是被建议不要在循环中使用类似break的命令,并且总是有一个不需要break的“定义明确的循环”。

这使用了一个while循环和一个标志。 如果未找到搜索,则循环将结束对所有值求和。

$month_days = ['Apr'=>'30', 'May'=>'31', 'Jun'=>'30', 'Jul'=>'31', 'Aug'=>'31', 'Sep'=>'30', 'Oct'=>'31', 'Nov'=>'30', 'Dec'=>'31', 'Jan'=>'31', 'Feb'=>'28', 'Mar'=>'31'];
$val = 'May';

$day_count = 0;
$i = 0;
$keys = array_keys($month_days);
$done = 0;
while (!$done)
{
    $done = $keys[$i] == $val || $i >= count($month_days) ? 1 : 0;

    $day_count += $month_days[$keys[$i]];
    $i++;    
}

echo 'Day Count: ' . $day_count . "\n";
echo 'i: ' . $i . "\n";

只是如果您不想使用foreach()

$month_days=array("Apr"=>"30", "May"=>"31", "Jun"=>"30", "Jul"=>"31", "Aug"=>"31", "Sep"=>"30", "Oct"=>"31", "Nov"=>"30", "Dec"=>"31", "Jan"=>"31", "Feb"=>"28", "Mar"=>"30");
$val='May';
$noOfDay = 0;

$month_index = array_search($val, array_keys($month_days));
$noOfDay = array_sum(array_slice($month_days,0,$month_index +1));

var_dump($noOfDay);

Output: int(61)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM