我正在尝试查看变量是否只有 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;
}
我还没有测试过它,所以它可能有点问题(目前正在与常规机器不同的机器上工作(