Как начать цикл for с 01
а не 1
? Я пробовал ниже, но, похоже, это не работает.
for ($i = 01; $i <= 12; $i++) { echo "<option value='$i'"; if ($i == $post_response[expiremm]) { echo " selected='selected'"; } $month_text = date("F", mktime(0, 0, 0, $i+1, 0, 0, 0)); echo ">$month_text</option>"; }
Вы не можете начать целое число в 01, вам нужно будет str_pad
значение, возможно, используя str_pad
для префикса ведущих элементов в строку:
$value = $i; if ($i < 10) { $value = str_pad($i, 2, "0", STR_PAD_LEFT); }
Обратите внимание, что для разных типов блоков вам, очевидно, потребуется изменить желаемую pad_length
.
01
– восьмеричное число 1
(что в этом случае эквивалентно десятичному значению 1
). Поскольку вы хотите форматировать вывод, чтобы иметь две цифры для числа, рассмотрите возможность использования printf
:
printf("<option value='%02d'", $i);
%
обозначает начало конверсии 0
означает «вставить строку с нулем» 2
означает, что «замена должна иметь минимальную длину 2», d
означает, что аргумент является целым числом, Рекомендации:
PHP будет анализировать 01 как целое число, поэтому он станет равным 1. Вы не можете перебирать строку типа «01», поэтому вам придется изменить значение $ i позже в вашем коде.
Если вам понадобится 01, вы можете использовать прокладку. http://php.net/manual/en/function.str-pad.php
для ($ i = 01; $ i <= 12; $ i ++) {
$value = strlen($i); if($value==1){ $k = "0".$i; }else { $k=$i; } echo "<option value='$k'"; if ($i == $post_response[expiremm]) { echo " selected='selected'"; } $month_text = date("F", mktime(0, 0, 0, $i + 1, 0, 0, 0)); echo ">$month_text</option>"; }
Для цикла не может начинаться с 01, поэтому вы можете сделать это, как показано выше
for ($i = 1; $i <= 25; $i++) { echo str_pad($i, 2, "0", STR_PAD_LEFT); echo "<br/>"; }
это может помочь вам ..