2011-11-09 29 views
1

如何用01開始for循環而不是1?我已經嘗試了下面的內容,但似乎並不奏效。如何用01而不是1來啓動for-loop?

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

回答

7

你真的不能開始在01的整數,則需要墊的價值,可能使用str_pad到將前導元素轉換爲字符串:

$value = $i; 
if ($i < 10) { 
    $value = str_pad($i, 2, "0", STR_PAD_LEFT); 
} 

請注意,對於不同的單元類型,您顯然需要更改所需的pad_length

+0

完美。謝謝! – Tom

+0

@湯姆 - 請接受他的回答。 – RustyTheBoyRobot

4

01是八進制數1(其等同於在此情況下,小數1)。既然你要格式輸出有兩個位數字的號碼,可以考慮使用printf

printf("<option value='%02d'", $i); 
  • %標誌着轉換開始
  • 0手段「墊零字符串」
  • 2表示「替換應該有一個最小長度爲2」
  • d意思是「參數是一個整數」

參考文獻:

0

PHP會將01解析爲一個整數,因此它將變爲1.您不能迭代像'01'這樣的字符串,因此您必須稍後在代碼中編輯$ i的值。

如果你以後需要01,你可以使用填充。 http://php.net/manual/en/function.str-pad.php

0

爲($ 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>"; 
     } 

For循環不能開始與01這樣你可以像這樣,如上所示

0
for ($i = 1; $i <= 25; $i++) { 
echo str_pad($i, 2, "0", STR_PAD_LEFT); 
echo "<br/>"; } 

它可以幫助你..

相關問題