date — PHP, если только 1 символ — получить все дни в году

Я пытаюсь увидеть, если переменная — только 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

Решение

ООНпроверенный:

<?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() обрабатывать форматирование для вас. Не нужно проверять длину номера.

4

Другие решения

Попробуйте использовать str_pad.

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

Выколотил какой-то быстрый код, но 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;
}

Я не проверял это, так что это может быть немного глючит (в настоящее время работает с другой машины, чем обычная)

1
По вопросам рекламы [email protected]