[ vatri @ 06.10.2008. 22:00 ] @
Evo ovako imam 2 fajla, baza.txt i niz.php.

baza.txt sadrzi niz: "1"=>prvo, "2"=>drugo....

a niz.php
Code:

$fajl = 'baza.txt';
$otvaranje = fopen($fajl, 'r');
$podaci = fread($otvaranje, filesize($fajl));
fclose($otvaranje);

$niz = array(
???
);
echo $niz['1'];


E sad sta da stavim umjesto ??? da se ubaci sadrzaj datoteke baza.txt? Naravno include, require ne moze.... Ili postoji bolji nacin da ovo izvedem?

pozdrav i hvala uparijed, i ako moze sto prije odgovor :(
[ Miroslav Ćurčić @ 07.10.2008. 00:59 ] @
Pročitan string "explode"uješ po zarezu (,)
pa u petlji svaki element opet "explode"uješ po "=>"
pa te vrednosti upotrebiš kao ključ-vrednost u konačni niz.
[ Aleksandar Ružičić @ 07.10.2008. 01:08 ] @
^ ovo nece raditi uvek, recimo da kao clan niza imas string koji u sebi sarzi zarez...

ako mozes da koristis serialize/unserialize onda bi ti to bilo najbolje resenje (ili eventualno json_encode/json_decode), ako ne, onda moras da pises parser (koji je veoma jednostavan za takav format...)
[ Nemanja Avramović @ 07.10.2008. 09:42 ] @
Code:
<?php

eval('$niz = array('.file_get_contents('baza.txt').');');

var_dump($niz);

?>


Mada, sa takvim baza.txt fajlom ćeš dobiti neke notice-ove jer ti stringovi nisu pod navodnicima. Ako ti je u txt fajlu ovakav string:

Citat:
1=>'prvo', 2=>'drugo'


...onda će sve lepo raditi. S druge strane, naravno da je bolje koristiti funkcije serialize/unserialize, pošto je ovo moje rešenje pravo budženje
[ vatri @ 07.10.2008. 10:23 ] @
Hvala vam ljudi na pomoci. Evo citavo jutro pokusavam skontati to serialize i unserialize, ali ne ide nikako :( Na kraju mi je ipak pomogla eval funkcija (hvala Nemanja). Po meni je ovo mnogo jednostavnije, malo sam preradio ovaj Nemanjin kod i radi ok:

Code:

$fajl = 'baza.txt';
$otvaranje = fopen($fajl, 'r');
$podaci = fread($otvaranje, filesize($fajl));
fclose($otvaranje);

eval('$niz = array('.$podaci.');');



Moze li mi neko objasniti kako u stvari radi serialize (kad smo vec oko toga, da naucim)? Citao sam php.net manual ali ne mogu skontati, vjerovatno zato sto nisam bas na "ti" sa engleskim :)

pozdrav
[ Nemanja Avramović @ 07.10.2008. 11:26 ] @
Funkcija serialize može od kompleksnih tipova podataka (nizovi, objekti, ...) da napravi string. Znači taj gore niz što si dobio propustiš kroz serialize i sačuvaš kao string u fajl.

Code:

<?php
$niz = array(1=>'jedan',2=>'dva');
$ser = serialize($niz);
echo $ser; //umesto ovoga trebalo bi $ser sačuvati u fajl
?>


Kasnije, kada ti zatreba niz, koristiš unserialize da od stringa napraviš niz/objekat/štagod.

Code:

<?php
$ser = file_get_contents('serijalizovani.txt');
$niz = unserialize($ser);
var_dump($niz);
?>


I to je cela filozofija

p.s. Ne vidim zašto si prepravljao onaj moj kod kad oba koda rade isto, samo što je moj u jednom redu Osim ako ja ne propuštam nešto...?
[ vatri @ 07.10.2008. 13:12 ] @
Nije radio ovaj tvoj cini mi se, htio sam ispisati prvi iz niza: "echo $niz['1']" pa je izbacio nest.
Pogledacu kasnije ovaj serialize, pa cu pokusati i tako odraditi, ako vec kazete da je bolje, pa vam javim rezultate.

Hvala jos jednom
[ Nemanja Avramović @ 07.10.2008. 14:39 ] @
Pa trebalo je da izbaciš var_dump, a da ostaviš gornji red... pogledaj malo čemu služi var_dump, ja sam ti preko te funkcije samo pokazivao da se na kraju dobija niz
[ vatri @ 07.10.2008. 17:18 ] @
Evo sad sam uradio na tvoj nacin i radi. Ma vjerovatno sam negdje u sintaksi pogrijesio...

var_dump — Dumps information about a variable :)
Skontao sam kasnije