计算给定月份的天数

时间:2020-12-30 12:43:43

标签: php arrays

我有最新的值日期 '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];

3 个答案:

答案 0 :(得分:1)

对于您的预期结果,您需要遍历数组并将这些值相加到一个变量中。但是您必须在根据 $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; 

答案 1 :(得分:0)

注意:March 在您的数组声明中包含错误的天数,应该是 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";

答案 2 :(得分:0)

如果您不想使用 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);

输出:int(61)