如何按年分类?

时间:2017-07-13 19:17:18

标签: php

$name = glob('*.{php}', GLOB_BRACE);


for($i=0; $i<=(sizeof($name)-1); $i++) {
  if( substr($name[$i],0,1) != "_") {
    $shortname = substr($name[$i], 0, -4); //ac_schnitzer_acl2_concept_2016 ...
    $bezyear = substr($shortname, 0, -4); // ac_schnitzer_acl2_concept_ ...
    $rest = substr($shortname, -4); // 2016...
    $nazv = $rest."_".$bezyear; // 2016_ac_schnitzer_acl2_concept_...

     natsort($nazv);

    $namenew = str_replace('_', ' ', $nazv);
    $namenew = ucwords($namenew); 
    echo "<tr>
        <td><a target=_blank href='".$name[$i]."'><img src='./img/_share/".$shortname."_1.jpg' width='172px'></a><br/></td>
        <td><a target=_blank href='".$name[$i]."'><center>".$namenew."</center></a><br/></td>
    </tr>";



  }
}

脚本按如下方式打印列表:

2017 Audi Q3
2016 Audi Q7
2017 Audi Q7 E Tron 2 Tfsi Quattro
2015 Audi R18 E-tron Quattro Racecar
2014 Audi R18 E Tron Quattro Lmp1 Racecar
2016 Audi R18 Racecar
2015 Audi R8 Competition
2016 Audi R8 Coupe V10 Plus Selection 24h
2016 Audi R8 E Tron

如何按年分类:

2017年奥迪Q3

2017年奥迪Q7 E Tron 2 Tfsi Quattro

2016年奥迪Q7

2016年奥迪R18 Racecar

2016年奥迪R8 Coupe V10 Plus选择24小时

2016年奥迪R8 E Tron

2015年奥迪R18 E-tron Quattro Racecar

2015年奥迪R8比赛

2014年奥迪R18 E Tron Quattro Lmp1赛车

使用natsort($ nazv); - 不起作用......

2 个答案:

答案 0 :(得分:1)

你可以更轻松地尝试使用一个功能

function my_sort($a,$b)
{

    preg_match('/\d{4}/',$a,$a1);
    preg_match('/\d{4}/',$b,$b1);


    if ($a1==$b1) return 0;
    return ($a1>$b1)?-1:1;
}

$names=array("ac_schnitzer_acl2_concept_2016.php", "acura_cdx_2017.php", "acura_ilx_endurance_racer_2013.php", "acura_mdx_2017.php", "acura_nsx_2016.php", "acura_nsx_2017.php", "acura_nsx__2016.php");

usort($names,"my_sort");

print_r($names);

答案 1 :(得分:0)

您可以将所有汽车放在关联数组中(在当前循环中),然后根据年份使用usort(循环外部)对其进行排序,然后显示html(在新循环中)。这样的事情:

...
$cars = [];
for($i=0; $i<=(sizeof($name)-1); $i++) {
    ...

    $cars[] = [
        'year' => $bezyear,
        'name' => $name[$i],
        'namenew' => $namenew,
        'shortname' => $shortname,
    ];
}

usort($cars, function($car1, $car2) {
    return $car1['year'] - $car2['year'];
});

foreach ($cars as $car) {
    echo "<tr>
    <td><a target=_blank href='".$car['name']."'><img src='./img/_share/".$car['shortname']."_1.jpg' width='172px'></a><br/></td>
    <td><a target=_blank href='".$car['name']."'><center>".$car['namenew']."</center></a><br/></td>
</tr>";
}