Käytössäni on seuraavanlainen skripti, jonka ideana on se, että skripti laskee
kansiossa olevien tiedostojen rivien yhteismäärän:
<?php $dir = glob("kansio/*"); $files = ""; foreach ($dir as $nimi => $tiedosto) { $files .= file_get_contents($tiedosto) . "\n"; } $tiedostot = $files; echo count($tiedostot); ?>
Ongelmana on se, että skripti ei näytä rivi määriä oikein, ainoastaan tulostaa rivien määräksi ykkösen. Mistähän tämä voisi johtua?
count() laskee taulukon solujen määrän, ei rivinvaihtoja merkkijonosta. Jälkimmäisen saat esim. substr_count($files, "\n");
Selvä juttu. Mutta entäs tälläinen viritys?
<?php $dir = glob("kansio/*"); $files = ""; foreach ($dir as $nimi => $tiedosto) { $files .= file_get_contents($tiedosto) . "\n"; } for ($i = 0; $i < 5; $i++) { $osat = explode(",", $files); echo $osat[1]; } ?>
Eikös tuo file_get_contents
in perässä oleva \n tee rivinvaihdon jokaisen tiedoston jälkeen, joten miksi ylläoleva skripti ei lähde pelittämään?
Pallo kirjoitti:
Mutta entäs tälläinen viritys?
Siinä ei oo mitään järkeä.
Käyttämällä file-arrayta ja countia homma hoituu paremmin.
<?php $open =opendir($dir); // Avattava kansio $arr = array(); $i=0; while( gettype($file = readdir($open) ) != boolean ) { if($file !="." && $file !=".."){ $arr[$i] = file($dir.$file); $i++; } } $count = array(); for($i=0;$i<count($arr);$i++){ $count[$i] = count($arr[$i]); } echo array_sum($count); ?>
En ole testannut, mutta tällä periaattella...
Aihe on jo aika vanha, joten et voi enää vastata siihen.