Miksi tämä ei toimi?
en tiedä onko sillä väliä, mutta itse ainakin käytän jokaisen if-lauseen jälkeen { } -merkkejä, vaikka olisikin vain yksi rivi iffin sisällä. Kyllä tuo muuten näyttää ihan toimivalta. Sekö ei siis tajua vaikka nimi olisikin tiedostossa? Jos se on ongelmana niin teepä näin: Laita forin jälkeen
$rivi=$tiedosto[$i]; $rivi=str_replace("\n","",$rivi);
ja sitten kokeile onko muuttuja $rivi (tai miksi ikinä sen laitatkaan) == $nimi.
EDIT: Siellä rivien lopussa kun saattaa olla jotain rivinvaihtoa tai muuta turhaa. Ja jos \n ei toimi niin kokeile \r (itse olen korvannut omissa koodeissani molemmat tyhjillä)
lainaus:
en tiedä onko sillä väliä, mutta itse ainakin käytän jokaisen if-lauseen jälkeen { } -merkkejä...
ilman { } merkkejä se if suoritetaan nopeammin, huomattavasti nopeammin.
$tiedosto = file("nimitiedosto.txt"); for($i = 0; $i < count($tiedosto); $i++){ if(trim($tiedosto[$i]) == $nimi){ echo"Nimi on jo listalla"; break; } }
trim poistaa rivinvaihdot ja muut tyhjät tilat. file funktiollahan tiedosto luetaan taulukkoon riveittäin, ja tietenkin rivinvaihdot tulevat alkioihin mukaan.
break lopettaa for-silmukan suorittamisen, joten ei tarvitse käydä loppuosaa tiedostosta läpi jos se löytyy ensimmäisellä rivillä. ja koska tuon for-silmukan sisällä on tulostusta, tuota huomautusta ei tulosteta kuin yhden kerran, break käytön ansiosta.
Sillä nopeudella ei ole käytännössä mitään väliä näin pienessä ohjelmassa, mutta hyvä se on tietysti opetella optimoimaan jo alusta alkaen. Moista asiaa en tiennytkään (että parsen nopeus riippuisi noista). trimmi olisi varsin kätevä, taidankin kokeilla. Ja break.
Nyt toimii.
Kiitos avusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.