【问题标题】:Looping between given to financial year (fiscal years)在财政年度(财政年度)之间循环
【发布时间】:2018-04-21 09:20:27
【问题描述】:

我想循环显示给定 2 个财政年度之间的所有年份。
就像给定年份是:2006-072010-11,我想显示这些年份之间的所有年份和那些连那两年也。
预期输出:2006-07, 2007-08, 2008-09, 2009-10, 2010-11
我尝试在 PHP 中使用 for loop,每年递增,但它会变得很长而且很笨拙。

【问题讨论】:

  • 分享你试过的代码

标签: php for-loop


【解决方案1】:

你可以像下面那样做

//year to start with
$startdate = 1960;

//year to end with - this is set to current year. You can change to specific year
$enddate = date("Y");

$years = range ($startdate,$enddate);

//print years
foreach($years as $year)
{
  echo $year . "<br />";
  echo $year.' - '. (substr($year,-2)+1)."<br />";
  echo $year.' - '.  str_pad((substr($year,-2)+1), 2 , "0",STR_PAD_LEFT)."<br />";

}

【讨论】:

    【解决方案2】:

    应该是这样的:

    $startdate = 1960;
    
    //year to end with - this is set to current year. You can change to specific year
    $enddate = 1970;
    
    $years = range($startdate, $enddate);
    
    //print years
    foreach ($years as $year) {
        if ((substr($year, -2) + 1) <= substr($enddate, -2)) {
            echo $year . ' - ' . (substr($year, -2) + 1) . "<br />";
        }
    }
    

    【讨论】:

    • 您好,您的代码运行良好,但在 2000,2001 等年份,它会打印 2000-1,2001-2(而不是 2000-01,2001-02)
    • 是的,应该是echo $year . ' - ' . str_pad((substr($year, -2) + 1), 2 , "0",STR_PAD_LEFT) . "&lt;br /&gt;";。我的坏:(
    【解决方案3】:

    您可以使用以下代码。

    // Start Year
    $start_year = 1960;
    
    //End Year
    $end_year = 1970;
    
    $all_years = range($start_year, $end_year);
    
    
    array_walk($all_years, function(&$year){
        $year = $year .'-'. str_pad((substr($year, -2) + 1),2,"0",STR_PAD_LEFT);
    });
    
    print_r($all_years);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多