我正在尝试查看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);
答案 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;
}
我还没有对它进行测试,所以它可能是一个小小的错误(目前使用不同于常规的机器工作)