Argh!

Voisiko joku valaista mua hieman PHP:llä filejen kanssa touhuamisesta? Yritän tehdä aivan yksinkertaista scriptiä, joka kerää ensin tiedostosta jokaisen rivin yhteen arrayhyn. Tämä onnistuu kohtuullisen helposti fgets($string, 1024):llä while-loopin sisällä (mahtaako tuohon olla parempaa tapaa?).

Huomasin kuitenkin tehdessäni uuden loopin, etten saa tiedoston viimeistä riviä mitenkään esille. Olen kahlannut monet tutorialit läpi, tuloksetta. Mikä neuvoksi?

Onko PHP:ssä edes mitään komentoa, jolla saan arrayn viimeistä täytettyä arvoa hyödyntäen loopin pysähtymään tietyssä pisteessä?

Mikä neuvoksi?
4495
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

*Yritän tehdä aivan yksinkertaista scriptiä, joka kerää ensin tiedostosta jokaisen rivin yhteen arrayhyn. Tämä onnistuu kohtuullisen helposti fgets($string, 1024):llä while-loopin sisällä (mahtaako tuohon olla parempaa tapaa?).*

On ja ei, kunhan tietäisi mitä olet tekemässä ja miksi rivit on saatava arrayhyn?

$x = file('y.txt'); // tekee saman kuin edellinen koodisi.


*Huomasin kuitenkin tehdessäni uuden loopin, etten saa tiedoston viimeistä riviä mitenkään esille. Olen kahlannut monet tutorialit läpi, tuloksetta. Mikä neuvoksi?*

Lasket tiedostojen rivimäärän ja tulostat sen mukaan http://fi2.php.net/manual/fi/function.count.php ja http://fi2.php.net/manual/fi/control-structures.while.php

Tai sitten vain http://fi2.php.net/manual/fi/control-structures.foreach.php


*Onko PHP:ssä edes mitään komentoa, jolla saan arrayn viimeistä täytettyä arvoa hyödyntäen loopin pysähtymään tietyssä pisteessä?*

On break;


Jos tarkoituksesi on vain tulostaa tiedoston pelkästään tiedoston sisältö, niin se kannattaa tehdä toisella taval, vaikkapa http://fi2.php.net/manual/fi/function.file-get-contents.php

Äänestä

*Yritän tehdä aivan yksinkertaista scriptiä, joka kerää ensin tiedostosta jokaisen rivin yhteen arrayhyn. Tämä onnistuu kohtuullisen helposti fgets($string, 1024):llä while-loopin sisällä (mahtaako tuohon olla parempaa tapaa?).*

On ja ei, kunhan tietäisi mitä olet tekemässä ja miksi rivit on saatava arrayhyn?

$x = file('y.txt'); // tekee saman kuin edellinen koodisi.


*Huomasin kuitenkin tehdessäni uuden loopin, etten saa tiedoston viimeistä riviä mitenkään esille. Olen kahlannut monet tutorialit läpi, tuloksetta. Mikä neuvoksi?*

Lasket tiedostojen rivimäärän ja tulostat sen mukaan http://fi2.php.net/manual/fi/function.count.php ja http://fi2.php.net/manual/fi/control-structures.while.php

Tai sitten vain http://fi2.php.net/manual/fi/control-structures.foreach.php


*Onko PHP:ssä edes mitään komentoa, jolla saan arrayn viimeistä täytettyä arvoa hyödyntäen loopin pysähtymään tietyssä pisteessä?*

On break;


Jos tarkoituksesi on vain tulostaa tiedoston pelkästään tiedoston sisältö, niin se kannattaa tehdä toisella taval, vaikkapa http://fi2.php.net/manual/fi/function.file-get-contents.php

Äänestä
  • *On ja ei, kunhan tietäisi mitä olet tekemässä ja miksi rivit on saatava arrayhyn?*

    Tein perlillä ohjelman, joka kerää yhteen tiedostoon, viidelle riville kerralla formilla syötetyt tiedot, appendaten tiedostoa joka kerralla. Eli siis kyseessä on tiedosto, jossa lopullinen rivimäärä vaihtelee.

    Olisin voinut tehdä perlilläkin kyseisen lukijan, joka tulostaa html:t ja niiden sisään tiedostosta halutut arvot, mutta kyseinen sivu käyttää tätä tiedosto.cgi# osoitusta, jolla voi hyppiä pitkin sivua oman tahtonsa mukaan, mutta kävi ilmi ettei explorer tue kyseistä toimintoa, mikäli kyseessä on jokin muu pääte kun .html. (yritin etsiä tutorialia tähän, myöskin tuloksetta.

    Päätin sitten kokeilla, josko explorer tukisi php:ta paremmin, vain huomatakseni että tiedostojen manipulointi on siinä täysin erilaista :).

    Eli periaatteessa scriptin pitäisi olla hyvin yksinkertainen.. tyyliin looppi, joka tulostaa yhden :n sisään joka kolmannen rivin sekä viidennen rivin, mutta kuitenkin niin ettei kyseisiä rivejä tule siihen kuin yksi.

    Kahlaan läpi antamasi linkit, josko niistä löytyisi tarvittavat tiedot :). Kiitos.

    Äänestä

  • Avuton.. kirjoitti:

    *On ja ei, kunhan tietäisi mitä olet tekemässä ja miksi rivit on saatava arrayhyn?*

    Tein perlillä ohjelman, joka kerää yhteen tiedostoon, viidelle riville kerralla formilla syötetyt tiedot, appendaten tiedostoa joka kerralla. Eli siis kyseessä on tiedosto, jossa lopullinen rivimäärä vaihtelee.

    Olisin voinut tehdä perlilläkin kyseisen lukijan, joka tulostaa html:t ja niiden sisään tiedostosta halutut arvot, mutta kyseinen sivu käyttää tätä tiedosto.cgi# osoitusta, jolla voi hyppiä pitkin sivua oman tahtonsa mukaan, mutta kävi ilmi ettei explorer tue kyseistä toimintoa, mikäli kyseessä on jokin muu pääte kun .html. (yritin etsiä tutorialia tähän, myöskin tuloksetta.

    Päätin sitten kokeilla, josko explorer tukisi php:ta paremmin, vain huomatakseni että tiedostojen manipulointi on siinä täysin erilaista :).

    Eli periaatteessa scriptin pitäisi olla hyvin yksinkertainen.. tyyliin looppi, joka tulostaa yhden :n sisään joka kolmannen rivin sekä viidennen rivin, mutta kuitenkin niin ettei kyseisiä rivejä tule siihen kuin yksi.

    Kahlaan läpi antamasi linkit, josko niistä löytyisi tarvittavat tiedot :). Kiitos.

    Tässä on sulle nopeesti tehty esimerkki, tosin pienellä miettimisellä olis voinut tehdä paremminkin.
    ¨


    Toi pysäyttää loopin 10 rivin jälkeen. Tiedostossa eka rivi on tyhjä, jotta noi jakojäänökset menee oikein.

    Äänestä

Kommentoi aloitusta


Avuton.. kirjoitti:

Voisiko joku valaista mua hieman PHP:llä filejen kanssa touhuamisesta? Yritän tehdä aivan yksinkertaista scriptiä, joka kerää ensin tiedostosta jokaisen rivin yhteen arrayhyn. Tämä onnistuu kohtuullisen helposti fgets($string, 1024):llä while-loopin sisällä (mahtaako tuohon olla parempaa tapaa?).

Huomasin kuitenkin tehdessäni uuden loopin, etten saa tiedoston viimeistä riviä mitenkään esille. Olen kahlannut monet tutorialit läpi, tuloksetta. Mikä neuvoksi?

Onko PHP:ssä edes mitään komentoa, jolla saan arrayn viimeistä täytettyä arvoa hyödyntäen loopin pysähtymään tietyssä pisteessä?

Mikä neuvoksi?

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