taulukon alkio

Mitenkähän tämä vertaaminen onnistuisi?

$tiedosto = fopen("tiedot.txt","r");
$tiedot = fread($tiedosto, filesize("tiedot.txt"));

$rivit = explode("\n",$tiedot);


Jos tulostan esim. echo rivit[0];
niin ohjelma tulostaa: nimi.

Nyt jos yritän verrata if operaattorilla rivit[0]=="nimi" niin tämä vertaaminen ei onnistukkaan. Pitääkö tuo taulukon alkio muuttaa string-muotoon ja miten se onnistuu?
6529
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Explode funktion palauttaman taulukon elementit ovat string-muotoisia. Vika on siinä, että yrität erotella tekstitiedoston rivit rivinvaihdolla. Tee mielummin näin:

$tiedosto = file("tiedot.txt","r");
foreach ($tiedosto as $row) {

if($row == "nimi"){ //tee jotain}
else{ //tee jotain muuta}
}

Äänestä
  • Tuo esimerkki ei kyllä toiminut(???)

    file() expects parameter 2 to be long

    Warning: Invalid argument supplied for foreach()

    Eli tuossa tekstiedostossa tiedot ovat eri riveillä

    aaa
    bbb
    ccc
    ddd
    eee

    Halusin tuolla explode funktiolla siis erotella nuo rivit erikseen taulukon alkioiksi ja sehän onnistui?

    Äänestä

  • ei toiminut kirjoitti:

    Tuo esimerkki ei kyllä toiminut(???)

    file() expects parameter 2 to be long

    Warning: Invalid argument supplied for foreach()

    Eli tuossa tekstiedostossa tiedot ovat eri riveillä

    aaa
    bbb
    ccc
    ddd
    eee

    Halusin tuolla explode funktiolla siis erotella nuo rivit erikseen taulukon alkioiksi ja sehän onnistui?

    Siis näin:

    $tiedosto = file("tiedot.txt");
    foreach ($tiedosto as $row) {
    if($row == "nimi"){ //tee jotain}
    else{ //tee jotain muuta}
    }

    Äänestä

  • juhakorkeapudas kirjoitti:

    Siis näin:

    $tiedosto = file("tiedot.txt");
    foreach ($tiedosto as $row) {
    if($row == "nimi"){ //tee jotain}
    else{ //tee jotain muuta}
    }

    Ei kyllä tuokaan tunnu toimivan... Echolla tulostaa tuon rivin nimen, mutta edelleenkin tuo if-lause ei anna minkäänlaista tulostusta.

    $tiedosto = file("tiedot.txt");
    foreach ($tiedosto as $row) {
    echo $row;
    if($row == "nimi"){
    echo "testi";
    }

    ainoastaan tämä tulostuu
    echo $row => tulostaa: nimi

    Äänestä

Jotakin "hämärää" tuossa on, mutta mikähän mahtaa olla ongelmana tuossa "string"-tiedostojen vertailemisessa?

Kirjoitan tiedot tiedostoon toisessa funktiossa tällä tavalla.

Äänestä
  • Nähtävästi taulukon elementti pitää trimmata ennen vertailua, trim($rivi). Käytin tuota jossain joskus ehkä toisin, jolloin se toimi mainitulla tavalla.

    Äänestä

Kommentoi aloitusta


stringiksi? kirjoitti:

Mitenkähän tämä vertaaminen onnistuisi?

$tiedosto = fopen("tiedot.txt","r");
$tiedot = fread($tiedosto, filesize("tiedot.txt"));

$rivit = explode("\n",$tiedot);


Jos tulostan esim. echo rivit[0];
niin ohjelma tulostaa: nimi.

Nyt jos yritän verrata if operaattorilla rivit[0]=="nimi" niin tämä vertaaminen ei onnistukkaan. Pitääkö tuo taulukon alkio muuttaa string-muotoon ja miten se onnistuu?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu