2013-06-24 2 views
1

У меня есть сценарий набора, написанный на PHP, с которым я сейчас работаю. На нашей странице регистраций есть выпадающий на дату рождения, которые вы можете увидеть в действии здесь: http://www.v3recruitment.com/users/register.phpОбратный порядок даты в скрипте

Как вы можете видеть, дата начинается с 1900 года, что я хотел бы сделать это в обратном порядке даты. Я думаю, что я нашел код Thats порождающие даты, но мой PHP не достаточно хорошо, чтобы выяснить, как получить его, чтобы показать даты в обратном порядке, вот этот код:

function FetchYears($type){ 
    $start = 1901; 
    $end = date("Y"); 
    for($i=$start;$i<=$end;$i++){ 
     $array[]['year'] = $i; 
    } 
    return $array; 
} 

Передняя часть используя шаблоны Smarty, и вот этот код:

 {section name="c" loop=$dob_years} 
     <option value="{$dob_years[c].year}" {get_value field=select selectvalue=$dob_years[c].year fieldname="dob_year"}>{$dob_years[c].year}</option> 
     {/section} 

Может ли кто-нибудь помочь мне в этом?

+0

см [ 'array_reverse()'] (http://php.net/manual/en/function.array-reverse.php) – naththedeveloper

ответ

3

Либо обратный цикл или использовать array_reverse()

возвращение изменения $array; в

Для Smarty это очень просто вы не должны даже создавать эту функцию в PHP это может быть сделано в Smarty, как Что ж.

{foreach $dob_years as $entry) 
    <option value="{$entry.year}">{$entry.year}</option> 
{/foreach} 

Проверить HTML_SELECT_DATE в Smarty или просто использовать только код ниже, не требует какого-либо дополнительного кода PHP.

{assign var=currentYear value=$smarty.now|date_format:"%Y"} 
{assign var=fromYear value="2003"} 
{section name=years start=$currentYear step=-1 loop=$fromYear} 
    {$smarty.section.years.index} 
{/section 
+0

Как просто! благодаря! –

+0

Добро пожаловать :) если этот ответ удовлетворит вас, вы можете отметить его как ответ. – Robert

1

Попробуйте как этого

function FetchYears($type){ 
    $start = date("Y"); 
    $end = 1901; 
    for($i=$start;$i>=$end;$i--){ 
     $array[]['year'] = $i; 
    } 
    return $array; 
} 

или просто использовать array_reverse при возвращении вашего массива как

function FetchYears($type){ 
    $start = 1901; 
    $end = date("Y"); 
    for($i=$start;$i<=$end;$i++){ 
     $array[]['year'] = $i; 
    } 
    return array_reverse($array); 
} 
0
function FetchYears($type){ 
    $start = date("Y"); 
    $end = 1901; 
    for($i=$start;$i>=$end;$i--){ 
     $array[]['year'] = $i; 
    } 
    return $array; 
} 
0
for ($i = $end; $i >= $start; $i--) { 
     $array[]['year'] = $i; 
} 

Не проверял еще, должно работать :)

0

Наверное, самый простой способ сделать это было бы поставить даты в формате UTC (целое число).

$dates[$i] = $timestamp; 

Затем для сортировки дат используйте функцию сортировки PHP.

sort($dates,SORT_NUMERIC); 

Вы можете использовать rsort для обратного.

rsort($dates,SORT_NUMERIC); 

Когда вы закончите, выполните итерацию по вашему массиву и тайнику с помощью функции date().

echo (date('m-d-Y', $dates[$i]));