Markus Schnitzler: jüngste Datei(en) aus Verzeichnis mit PHP ermitteln

Beitrag lesen

»»Ja und? Dann gib aus dem Array, das glob() liefert, eben nur den letzten (zweit/drittletzten) Eintrag zurück. Das kann doch wohl nicht mehr das Problem sein!

Doch! Genau ist das ist das Problem, von dem ich die ganze Zeit rede. Wie bekomme ich aus dieser Liste die neuste Datei?

Mit dem Code

<?php  
foreach (glob("Artikel/*.php") as $filename) {  
echo $filename . '<br>'; }  
?>

erhalte ich eine schöne Liste:

Artikel/20101209.php
Artikel/20110107.php
Artikel/20110223.php
Artikel/20110311.php
Artikel/20110405.php

Aber ich möchte als Ergebnis nur Artikel/20110405.php haben.

Da das Array, das Glob() erzeugt, ein numerisches ist, kann man auch einfach einen Direktzugriff auf die drei letzten Elemente (oder wieviele man eben braucht) wagen:

$last = count($_globresult)-1;

echo (isset($_globresult[$last]?:''));
   echo (isset($_globresult[$last-1]?:''));
   echo (isset($_globresult[$last-2]?:''));

Das ist jetzt nur ein weiterer Lösungsweg. Der muss selbstverständlich noch angepasst und vervollständigt werden...

Das klingt interessant. Aber wie kann ich das in den oben genannten glob-Code einfügen?

<?php  
foreach (glob("Artikel/*.php") as $filename) {  
$last = count($_globresult)-1;  
echo (isset($_globresult[$last]?:'')); }  
?>

oder

<?php  
foreach (glob("Artikel/*.php") as $filename) {  
$last = count($_globresult)-1;  
echo (isset($_globresult[$last]?:'')); }  
?>

produzieren nur Fehlermeldung in der Art
Parse error: syntax error, unexpected '?', expecting ',' or ')'