2017-07-13 1 views
-1
$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>"; 



    } 
} 

Das Skript druckt die Liste wie folgt:Wie sortiert man nach Jahren?

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 

Wie von Jahren sortieren:

2017 Audi Q3

2017 Audi Q7 E Tron 2 TFSI Quattro

2016 Audi Q7

2016 Audi R18 Rennwagen

2016 Audi R8 Coupe V10 Plus-Selection 24h

2016 Audi R8 E Tron

2015 Audi R18 E-tron Quattro Racecar

2015 Audi R8 Wettbewerb

2014 Audi R18 E Tron Quattro Lmp1 Rennwagen

Verwendeter Natsort ($ nazv); - funktioniert nicht ...

+0

Können Sie '$ name = glob ('* {php}.', GLOB_BRACE) ersetzen;' - Damit alle von uns können den Code ausprobieren –

+1

Erste Zeile '$ name =' shoudl, dass ein Array sein? Cause it aint zur Zeit – RiggsFolly

+0

'Warnung: Natsort() erwartet Parameter 1 Array, String gegeben ' – RiggsFolly

Antwort

0

Sie können alle Autos in assoziative Array (in Ihrer aktuellen Schleife), dann sortieren sie basierend auf Jahr mit Usort (außerhalb der Schleife) und danach die HTML (in einer neuen Schleife). So etwas Ähnliches:

... 
$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>"; 
} 
+0

'@Alexandar Mitsev' Ich beschrieb ausführlich meine Schritte –

1

Sie können mehr versuchen einfach mit einer Funktion zu tun

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); 
+0

Sie sind auf dem richtigen Weg! –

+1

die Funktion ist nur zu trennen, wenn Sie eine Bibliothek oder etwas verwenden, aber als erste Antwort von Alexandar, können Sie es auch in einer Zeile tun. :) – israel

Verwandte Themen