2012-04-22 4 views
0

Я хочу добавить 0 перед номерами с одной цифрой.Добавление 0 перед датой ошибки

for($i_y=1950; $i<=2012; $i++) $years[]=$i_y; 
for($i_m=1; $i<=12; $i++) $months[]=$i_m; 
for($i_d=1; $i<=31; $i++) $days[]=$i_d; 

пытался

for($i_y=1950; $i<=2012; $i++) $years[]=$i_y; 
for($i_m=01; $i<=12; $i++) $months[]=$i_m; 
for($i_d=01; $i<=31; $i++) $days[]=$i_d; 

это было не так просто, Что правильный путь?

это для избранных вариантов

Пример

for($i=1; $i<=50; $i++) 
$months=$i; 

echo '<select name="month" select id="month">'; 
echo '<option value="">' . __("0") . '</option>'; 
foreach($months as $month){ 
$selected = ''; 
echo '<option value="' . $month . '" ' . $selected . '>' . $month . '</option>'; 
        } 
echo '</select>'; 
+1

Невозможно реально ввести фактические числовые значения. Есть ли причина, по которой вам нужно это делать? –

+0

@TiesonT. Да, они являются вариантами для окна выбора, а формат, который нужно сохранить, - 2012-04-22. он не может быть 2012-4-22 – Craig

+0

Вы можете нулевое заполнение «номера», которое вы храните в массиве, но чтобы использовать его как итератор в своем цикле 'for', он должен быть числом. Используйте метод @ kuba ниже: '$ months [] = str_pad ($ i_m, 2, '0', STR_PAD_LEFT);' –

ответ

5

str_pad использования:

$x = "1"; 
echo $x; // will output "1" 
$y = str_pad($x, 2, "0", STR_PAD_LEFT); 
echo $y; // will output "01" 
+0

Спасибо за быстрый отклик, я использую варианты выбора, где бы это реализовать? – Craig

+0

показать мне, как вы создаете параметры, и мы скажем вам – kuba

+0

Я обновил вопрос, чтобы показать его; однако @Tieson T уже показал мне, как это сделать. Спасибо за Ваш ответ! – Craig

0

Если вы пытаетесь отформатировать дату, как '2012-04-01' вы можете сделать это с помощью sprintf():

$formatted_date = sprintf("%04d-%02d-%02d", $year, $month, $day); 
Смежные вопросы