Bunu yapmak için güzel bir yol?

6 Cevap php

Ben sadece bazı dosyaları okumak nasıl anladım ama ben gerçekten sevmiyorum.

Ben bu yüzden bazı 1.txt adlı dosyaları, 2.txt, 3.txt ve var. Ben sadece son 2 dosyalarını okumak ve yazdırmak gerekiyor. Bunu yapmak için bir yol buldum ama bunu yapmak için başka yollar görmek istiyorum.

Benim yolum:

    <?php

$i = 1;
$x = 1;

while (file_exists('news/'.$i.'.txt')){
    $i++;
}

$i--;

while ((file_exists('news/'.$i.'.txt')) && ($x <= 2)){
    $data = file_get_contents('news/'.$i.'.txt'); 
    echo $data;
    $i--;
    $x++;
}

?>

Teşekkürler!

6 Cevap

bunun yanlış ne, bunu yapmanın iyi bir yol gibi görünüyor?

Alternatif olarak, scandir() ile bir diziye dosya adlarını bütün yük, ve sonra dizide geçen, sadece son iki dosyaları okuyabilir:

Eğer haber veritabanı kayıtlarını olsaydı sadece yerine diskten okuma veritabanını sorgulamak olabilir böylece, uygun olacaktır. Bu bir seçenek değil, ancak sizin gibi bir şey düşünebilirsiniz:

$files = scandir('news/', 1);
for($i = 0; $i < 2; $i++) {
    $data = file_get_contents($files[0]);
    echo $data;
}

Bu PHP 5 scandir fonksiyonunu kullanır.

$files = glob('news/*.txt'); // This is assuming all *.txt files have numbers for the * part

$files = rsort($files);

for ($x = 0; $x < 2; $x++) {
    readfile($files[$x]); 
}

Olmasına rağmen, muhtemelen Jonathan Sampson'ın cevap başına olarak, glob / rsort hatlar için scandir yerine olabilir.

Evet, şimdi PHP5 kullanarak YAPIYORSUNUZ?

Bu dizinde sadece dosyaları iseniz readdir kullanarak dizindeki tüm dosyaları okuyabilir:

http://www.howtogeek.com/howto/programming/php-display-a-customizeable-list-of-files-in-a-directory/

Ben bunu bu şekilde yapardı, ben daha okunabilir olduğunu düşünüyorum:

$allTextFiles = glob('news/*.txt');
$numericTextFiles = array_filter($allTextFiles, create_function('$file', 'return is_numeric(basename($file, ".txt"));'));
asort($numericTextFiles);
readfile(end($numericTextFiles));
readfile(prev($numericTextFiles));