Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedostojen rivien yhteismäärä

Pallo [24.03.2008 18:44:11]

#

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?

Blaze [24.03.2008 18:51:15]

#

count() laskee taulukon solujen määrän, ei rivinvaihtoja merkkijonosta. Jälkimmäisen saat esim. substr_count($files, "\n");

Pallo [24.03.2008 19:01:58]

#

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_contentsin perässä oleva \n tee rivinvaihdon jokaisen tiedoston jälkeen, joten miksi ylläoleva skripti ei lähde pelittämään?

Blaze [24.03.2008 19:37:32]

#

Pallo kirjoitti:

Mutta entäs tälläinen viritys?

Siinä ei oo mitään järkeä.

pistemies [24.03.2008 21:21:15]

#

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...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta