Как начать цикл for с 01 вместо 1?

Как начать цикл 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: printf
  • Руководство PHP: sprintf

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/>"; } 

это может помочь вам ..