Я пытаюсь увидеть, если переменная — только 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);
ООНпроверенный:
<?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;
}
Я не проверял это, так что это может быть немного глючит (в настоящее время работает с другой машины, чем обычная)