PHP 如果只有 1 个字符 - 获取一年中的所有天数


PHP if only 1 character - Get All Days In a Year

我正在尝试查看变量是否只有 1 个字符,如果是,我将在它之前添加一个 0。

我会想if(strlen($a)==1)但事实并非如此。 以下是我的完整代码。

简而言之,我要做的是获取一年中的所有日期,并以这种格式将任何给定年份放入数组中。

像这样的月日年010115那将是January 1st 2015.然后我想把全年放在一个数组中;任何给定年份的所有 365 天。硬编码看起来像这样

$AllDaysIn2015= array(010115, 010215, 010315, 010415, 010515, etc... );

但是我如何将所有这些以这种格式放入一个数组中呢?

为了实现这一目标,我从这里开始,但卡在数 1 个字符上。

function daysInMonth($year)
{
    for($i = 1; $i < 12; $i++)
    {
    $num = cal_days_in_month(CAL_GREGORIAN, $i, $year); // 31
    echo $num . "<br>";
        for($a =1; $a < $num+1; $a++)
        {
            $a = trim($a);
            if(strlen($a)==1)
            {
            $a = "0$a";
            }
            else
            {
                echo "$a, ";
            }

        }
    echo "<br>";
    }
}
daysInMonth(2014);

Untested:

<?php
function daysInMonth($year) {
    $dates = array();
    for($i = 1; $i <= 12; $i++) {
        $num = cal_days_in_month(CAL_GREGORIAN, $i, $year); 
        for($a = 1; $a < $num+1; $a++) {
            $dates[] = sprintf('%02d%02d%04d', $i, $a, $year);
        }
    }
    return $dates;
}
$datesInYear = daysInMonth(2014);

这将使用sprintf()为您处理格式设置。无需检查数字的长度。

尝试使用 str_pad。

$a = str_pad($a, 2, "0", STR_PAD_LEFT)

敲定了一些快速代码,但 jmeyer2k 击败了我。我想我会发布我写的东西,因为它更完整并提供了一些上下文

function days_in_month($year){
    $data = array();
    for($i=1; $i<=12; $i++){
        $num = cal_days_in_month(CAL_GREGORIAN, $i, $year);
        for($a=1; $a<=$num; $a++){
            $a = str_pad($a,2,"0",STR_PAD_LEFT);
            $data[] = str_pad($i,2,"0",STR_PAD_LEFT).$a.$year;
        }
    }
    return $data;
}

我还没有测试过它,所以它可能有点问题(目前正在与常规机器不同的机器上工作(