PHP - Időrendi listázás / oldalankénti tördeléssel

Sziasztok!

Az alábbit használom arra, hogy egy könyvtárból kiolvassam a file neveket időrendi sorrendben, majd kilistázzam.
Próbálkoztam az array_slice beépítésével, de nem jártam sikerrel:( Hogy lehetne tördelni, hogy az idősorrend megmaradjon és mondjuk onnantól mutassa odáig ahonnan én szeretném?

<?php
$dir = "/var/www/pityu/images";
chdir($dir);
array_multisort(array_map('filemtime', ($files = glob("*.*", GLOB_BRACE))), SORT_DESC, $files);
foreach($files as $filename)
{
echo "

";
}

?>

a multisort elé gondoltam az array_slice ot berakni és a végére , 0, 10 (0-tól 10-ig).

Vakarom a falat...
Bármilyen ötletet meghallgatok:)

Köszönöm

Hozzászólások

az echo rész az persze nem így néz ki, működik a dolog, ha a teljes tartalmat listázom.

Ha minden áron ragaszkodsz az array_slice-hoz, akkor negyedik paraméternek megadhatod, hogy ne rendezgesse vissza a tömböt index szerint. (http://php.net/manual/en/function.array-slice.php)

Viszont ha nem tartanak pisztolyt a fejedhez hogy plusz egy függvénybe ágyazd az így is nehezen olvasható kódod, akkor a legkézenfekvőbb egy for ciklus lenne a darabolás és a foreach helyett, ahol a ciklusváltozó kezdő értéke az az offset, amit elsőnek ki akarsz írni:

for($i = $startIndex, $endIndex = min(sizeof($files), $startIndex + 10); $i < $endIndex; $i++) {
// echo ...
}

Köszi. Igen, ez így jó lesz, mert látszanak a tömbök, csak a $filename veszik el, de alapvetően ezt az egészet át kell gondolnom. 10 év újra játszás után nem igazán látom a fától az erdőt néha:)
Egyelőre nem akarok db-t alá rakni amiben lehet tárolni a fileok sorszámát és az elérési útvonalat, de lehet ez lesz a megoldás hosszú távon, csak jajj régen volt már...:(

Segíts nekünk hogy tudjunk neked segíteni, azzal, hogy olvashatóbb kódot adsz, pl. ahogy alább beraktam. Lehetőleg "egy művelet egy sor" legyen.

<?php

$dir = "/var/www/pityu/images";

chdir($dir);

// a multisort felbontva
$files = glob("*.*", GLOB_BRACE);
$file_times = array_map('filemtime', $files);
array_multisort($file_times, SORT_DESC, $files);
unset($file_times);

// az új sor
$files = array_slice($files,0,10);

foreach ($files as $file){
echo filemtime($file) . ' - ' . $file . "\n";
}

?>

Szia!

Köszi a segítséget. A te írásod a 10 db-s blokkokat jó irányban kezeli, viszont a 10-s blokkon belül megfordul az irány. Ez egy kicsit furcsa nekem, persze a tömböket lehetne még forgatni. Egyelőre maradtam az eredeti megoldásnál és megcsináltam lapozhatóra is az egészet. Az alábbi kód született:)


<?php
$sorsz = $_GET['sorsz'];
if (!isset ($sorsz))
{$sorsz = 0;}

$dir = "/var/www/kaktusz/images";
chdir($dir);
array_multisort(array_map('filemtime', ($files = glob("*.*", GLOB_BRACE))), SORT_DESC, $files);

$darab = 10;
$files = array_slice($files,$sorsz,$darab);
foreach($files as $filename)
{ 
echo "<img src= \ " images/ " . $ filename . " \ " > ";
}

//lapozó
if ($sorsz < 10){
    echo "elején vagy";
} else {
$visszasorsz = $sorsz - 10;
echo "<a href=\"index.php?sorsz=".$visszasorsz."\">Vissza</a>";
	}
$tovabbsorsz = $sorsz + 10;
echo "<a href=\"index.php?sorsz=".$tovabbgeci."\">Tovább</a>";
?>