如何用01而不是1开始for循环?

时间:2011-11-09 09:52:17

标签: php

如何使用01而不是1启动for循环?我已经尝试了下面的内容,但它似乎没有用。

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

5 个答案:

答案 0 :(得分:8)

你真的不能在01开始一个整数,你需要填充这个值,可能使用str_pad将前导元素加到字符串前面:

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

请注意,对于不同的单位类型,您显然需要更改所需的pad_length

答案 1 :(得分:4)

01是八进制数1(在这种情况下相当于十进制1)。由于您希望格式输出的数字有两位数,请考虑使用printf

printf("<option value='%02d'", $i);
  • %标志着转化的开始
  • 0表示“将字符串填充为零”
  • 2表示“替换的最小长度为2”
  • d表示“参数是整数”

参考文献:

答案 2 :(得分:0)

PHP将01解析为整数,因此它将变为1.您不能迭代像'01'这样的字符串,因此您必须稍后在代码中编辑$ i的值。

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

答案 3 :(得分:0)

  

for($ i = 01; $ i&lt; = 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开头,所以你可以这样做,如上所示

答案 4 :(得分:0)

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

它可能对你有所帮助..