Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Samanlaisten rivien järjestäminen txt tiedostosta

karvinen [22.07.2005 14:32:57]

#

Mites onnistuu seuraavanlainen systeemi.
Tekstitiedosto jossa rivit:
kissa
koira
kissa
kissa
koira

Php lukee rivi kerrallaan ja tulostaa:
Kissa 3
Koira 2

Eli ryhmittelee samanlaiset rivit ja tulostaa rivin ja montako samanlaista riviä on tiedostossa.

Luetaan taulukkoon ja käsitellään jotenkin?
Vai?

Megant92 [22.07.2005 14:47:21]

#

while(rivejajaljella()){
rivi=LueSeuraavaRivi();
loytyko=false;
for(a=0;a<count(loydetyt);a++){
   if(loydetyt[a]==rivi){
      tulokset[a]++;
      loytyko=true;
      break;
   }
}
if(!loytyko){
   loydetyt[count(loydetyt)+1]=rivi;
   tulokset[count(tulokset)+1]++;

}}

Tuo ei taida toimia,mutta suuntaa siinä vois olla.

kayttaja-2791 [22.07.2005 14:51:21]

#

<?php
//Luetaan tiedostosta rivit taulukkoon $array
$array = file('tiedosto.txt');

//Laitetaan rivit uuteen arrayhyn niin että key on Kissa tai Koira ja arvo lukumäärä
foreach ($array as $ip) {
  if (isset($newarray[$ip]))
    $newarray[$ip] = $newarray[$ip] + 1;
  else
    $newarray[$ip] = 1;
}

//Järjestetään niin halutessa
asort($newarray);
reset($newarray);

//Tulostusesimerkki
foreach ($newarray as $ip => $count)
  echo "{$ip}: $count <br />\n";
?>

Jos ihmettelet muuttujien nimiä niin kopsasin sen lähes suoraan edellisestä vastauksestani kyseiseen asiaan:
https://www.ohjelmointiputka.net/keskustelu/9295-ip-numeroiden-esiintyminen-kpl-na

karvinen [22.07.2005 15:07:13]

#

En välttämättä hakenut valmista koodia, mutta tuo oli juuri se mitä hain.
Kiitos!

karvinen [26.07.2005 10:12:41]

#

Kun tulostan alla olevalla koodinpätkällä, niin haluaisin jokaisen rivin eteen kasvavan numerosarjan.
Esim:
1 jdhfgjkhfg
2 kjgdh kgj
3 dlgkjhf

$k muuttujalle annetaan alussa arvo 0 ja tulostetaan foreach lauseessa, mutta mihin tuohon voisi laittaa $k++ että kasvattaisi joka kerta $k:n arvoa yhdellä.

foreach käsittääkseni toimii vain seuraavaan puolipisteeseen saakka.

foreach ($newarray as $ip => $count)

  echo "$k {$ip}: $count <br />\n";
?>

Mazuli [26.07.2005 11:46:30]

#

laita aaltosulut({}) niinkui esim whilessä niin voit suorittaa useampia käskyjä

foreach($newarray as $ip => $count)
{
   echo "$k {$ip}: $count <br />\n";
   $k++;
}

karvinen [26.07.2005 12:02:34]

#

Kiitokset ei vaan polla säteillyt tuon vertaa ;)

Vastaus

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

Tietoa sivustosta