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

时间:2014-12-18 03:00:50

标签: php date strlen

我正在尝试查看var是否只有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);

3 个答案:

答案 0 :(得分:4)

UN tested

<?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()来处理格式。无需检查号码的长度。

答案 1 :(得分:2)

尝试使用str_pad

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

答案 2 :(得分:1)

敲了一些快速代码,但是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;
}

我还没有对它进行测试,所以它可能是一个小小的错误(目前使用不同于常规的机器工作)