Keresés

Új hozzászólás Aktív témák

  • Peter Kiss

    senior tag

    válasz PumpkinSeed #14599 üzenetére

    Karaktert olvasos, és nem sort/karakterláncot. Karaktert nem lehet indexelni. Ha kell a fájl egész tartalma:

    <?php
    echo file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/../gem.txt');

    Ez string-ként beolvassa az egészet, azt pedig már lehet indexelni.

  • Sk8erPeter

    nagyúr

    válasz PumpkinSeed #14599 üzenetére

    A kódod több szempontból is rossz:
    $fp = fopen('$DOCUMENT_ROOT/../gem.txt','ab');
    Mivel sima aposztrófot használsz, a $DOCUMENT_ROOT nem fog behelyettesítődni, tehát vagy konkatenáld, vagy használd az idézőjelet (de inkább előbbi a kód jobb olvashatósága érdekében).
    Aztán: 'ab' módban nyitod meg a fájlt, ebből az 'a': "Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.", 'b' a binary mode. Az 'a' itt esetedben nem igazán indokolt, mivel egyszerű olvasást hajtasz végre. A binary mode biztos kell neked?

    Ezenkívül ezt csinálod:

    $i = 0;
    while (!feof($fp)) {
    $szoveg[$i] = fgetc($fp);
    $i++;
    echo $szoveg[$i];
    }

    itt az $i változót megnöveled, és AZUTÁN íratod ki a $szoveg tömb i-vel indexelt tartalmát. Magyarul az echo-nak nyilván még az $i++ előtt kéne szerepelnie.

    Meg ellenőrizni kéne, hogy a megnyitás sikeres volt-e (elég egyszerű: a while-t és fclose-t egyszerűen berakod egy if($fp) blokkba), sikertelen megnyitás utáni fclose warningot okoz. Igaz, sikertelen fopen is azt okoz, ezért azt speciel érdemes lehet elnyomni @ karakterrel, VAGY még a megnyitási kísérlet előtt vizsgálni, hogy létezik-e egyáltalán a fájl (file_exists()).

    Ez egyébként csak gyakorlás? Mi a konkrét célod?

    ==================================================

    (#14600) Athlon64+ :
    "Karaktert nem lehet indexelni."
    + (#14602) Athlon64+ :
    "Akor ne indexeld a beolvasott karaktert?! :U"
    Mi az, hogy karaktert nem lehet indexelni? A kódja teljesen jól működne, ha jól használná. Sehol nem is indexeli a karaktereket, egyszerűen a karaktereket egy külön tömbbe rakja, aminek az indexét az $i adja.

    [ Szerkesztve ]

    Sk8erPeter

Új hozzászólás Aktív témák