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?
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.
<?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
En välttämättä hakenut valmista koodia, mutta tuo oli juuri se mitä hain.
Kiitos!
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"; ?>
laita aaltosulut({}) niinkui esim whilessä niin voit suorittaa useampia käskyjä
Kiitokset ei vaan polla säteillyt tuon vertaa ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.