PHP显示01而不是1

10
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

可能重复:
使用PHP在数字前添加前导零进行格式化

我正在使用php填充下拉框。

这是代码:

$select_month_control = '<select name="month" id="month">';
for($x = 1; $x <= 12; $x++) {
$select_month_control.= '<option value="'.$x.'"'.($x != $month ? '' : ' selected="selected"').'>'.date('F',mktime(0,0,0,$x,1,$year)).'</option>';
}
$select_month_control.= '</select>';

这是创建这个:
<select id="month" name="month">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option selected="selected" value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>

问题在于我需要将1、2、3等数字变为01、02、03等……就像这样:
<option value="01">January</option>

代替:

<option value="1">January</option>

怎么做这件事?

3
你知道sprintf吗?试试用echo sprintf('%02d', 1); - Jon
2
请参见此处:https://dev59.com/mHI-5IYBdhLWcg3wu7Lv - FreudianSlip
你可以使用三元运算符来显示 selected,它也可以用于选项值:( strlen($x)==1? '0'.$x: $x ) - rlatief
3个回答

28

17

用户 str_pad 参考资料:http://php.net/manual/zh/function.str-pad.php


$select_month_control = '<select name="month" id="month">';
for($x = 1; $x <= 12; $x++) {
$select_month_control.= '<option value="'.str_pad($x, 2, "0", STR_PAD_LEFT).'"'.($x != $month ? '' : ' selected="selected"').'>'.date('F',mktime(0,0,0,$x,1,$year)).'</option>';
}
$select_month_control.= '</select>';

你的代码有语法错误。下次从别处复制一行时要仔细检查 ;) - Lix

6
你可以在循环内部尝试使用str_pad()函数:

str_pad — 使用另一个字符串填充字符串为指定长度

for($x = 1; $x <= 12; $x++) {
  $value = str_pad($x,2,"0",STR_PAD_LEFT);
  $select_month_control.= '<option value="'.$value.'">'.$value.'</option>';
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接