Autor | Zpráva | ||
---|---|---|---|
kordy Profil |
#1 · Zasláno: 29. 12. 2012, 22:03:22
Dobrý večer potřeboval bych jak název napovídá načíst soubor od x řádku do do y řádku :)
Něco už jsem hledal a našel vypořádal jsem se teda s problémem jak začít od určitého řádku, ale na způsob jak načíst např do řádku 100 jsem nepřišel. Prolétli mi hlavou myšlenky o složitých funkcích, ale předpokládám, že to jde jistě jednodušeji. Tady je to co jsem již "skopíroval" :D $radky = array_slice(file('text.txt'), 3); |
||
Taps Profil |
kordy:
co takto ? $soubor=file('text.txt'); $i=0; foreach($soubor as $s){ if($i<=100){ echo $s; } $i++; } |
||
kordy Profil |
#3 · Zasláno: 29. 12. 2012, 22:27:11 · Upravil/a: kordy
Děkuji, v tuto chvíli mě nenapadá jak to dohromady skloubit....
Ráno je moudřejší večera určitě na to přijdu :D Fajn docvaklo mi to o něco dřív než sem čekal :D takže pro ty co to hledají a nechce se jim myslet vypadá hotovej kód takhle: <?php $soubor= array_slice(file('text.txt'), 3); $i=0; foreach($soubor as $s){ if($i<=10) { echo $s; } $i++; } kde 3 je řádek od kterého se začíná načítat a 10 je množství načtených řádků od toho 3. ;) |
||
user243 Profil |
#4 · Zasláno: 29. 12. 2012, 23:18:49
a není hezčí použít for()?
|
||
Alphard Profil |
Pro malé soubory ano, ale kdyby se s tím měl procházet třeba několika megový log, raději použít fgets() a nenačítat vše najednou do paměti.
I s použitím file() by byl lepší for (user243 [#4]), uvedená konstrukce se mi zdá naprosto otřesná. Na začátek zbytečná transformace pole, pak vypsání užitečných dat a nakonec zcela neužitečné iterace, kdyby tam byl aspoň break :-) |
||
Davex Profil |
#6 · Zasláno: 30. 12. 2012, 12:10:51
Pro velké soubory se hodí tento skript s minimální spotřebou paměti:
<?php $od = 10; $kolik = 5; $f = new SplFileObject("text.txt"); $f->seek($od); while (!$f->eof() && $kolik--) { echo $f->current(); $f->next(); } |
||
Časová prodleva: 11 let
|
0