02. 11. 2009. | #1 |
Ivan Dilber
Sir Write-a-Lot
|
php f-ja za merge 2 niza
Imam neke opcije, koje se cuvaju u obliku visedimenzionalnog niza, dubina nije ogranicena (kao neko stablo), i sad treba da omogucim da se vise takvih nizova spoji u jedan, pri cemu (and there's the catch), treba da postoji mogucnost da jedni nizovi prepisu vrednosti drugih, po redosledu kojim se mergu-ju.
Glup primer (u kvazi json notaciji ): { a:1, b:2, c:{d:3,e:4 }} + {c:{d:5, f:6}} = { a:1, b:2, c:{d:5,e:4,f:6 }} I tu je sad problem jer, koliko vidim, ni jedna od ugradjenih php funkcija (array_merge, array_merge_recursive) ne radi to bas tako kako meni treba, pa mi jedino prostaje da pravim foreach() rekurzivnu f-ju koja ce da radi merge, sto je daleko od brzog, narocito za duboko stablo... Jel ima neko bolju ideju, kako iskoristiti ugradjene php f-je da se to optimizuje (eventualno izbegne rekurzija iz php-a) ?
__________________
Leadership is the art of getting people to want to do what you know must be done. |
02. 11. 2009. | #2 |
Goran Pilipović
Sir Write-a-Lot
|
Ako je pitanje da li postoji generička PHP funkcija za to, onda znaš odgovor, mislim da si prinuđen da pišeš svoju
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
02. 11. 2009. | #3 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
A što misliš da je rekurzija loše rešenje?
|
02. 11. 2009. | #4 |
Milan Cvejic
Wrote a book
|
rekurzn Jea
Kôd:
function recursiveArrayMerge($array1, $array2){ reset ($array2); while(key($array2)!==null) { if (is_array(current($array2)) && isset($array1[key($array2)])) { $array1[key($array2)] = recursiveArrayMerge($array1[key($array2)],current($array2)); } else { $array1[key($array2)] = current($array2); } next($array2); } return $array1; }
__________________
http://weevify.com |
02. 11. 2009. | #5 |
Bojan Abramovic
Professional
Datum učlanjenja: 16.01.2008
Lokacija: Novi Sad
Poruke: 232
Hvala: 30
47 "Hvala" u 30 poruka
|
...ili pogledas u komentarima php-ove, ima varijacija na temu
http://php.net/manual/en/function.ar...-recursive.php |
"Hvala" bOkIcA za poruku: |
02. 11. 2009. | #6 |
Ivan Dilber
Sir Write-a-Lot
|
samo zato sto je sporija od petlji, u php-u su pozivi f-ja jedna od najskupljih operacija (bar je tako bilo, ne znam za 5-cu da li se nesto promenilo). Narocito u poredjenju sa ugradjenim f-jama. A posto je ovo neko stablo privilegija, moze da bude i vrlo veliko i vrlo duboko, a pozivace se stalno, pa bih da ga optimizujem, ako je moguce..
nesto sad gledam sa array_walk_recursive() da uradim, bas cu da uporedim brzine cim budem imao malo vremena...
__________________
Leadership is the art of getting people to want to do what you know must be done. |
Alati teme | |
Način prikaza | |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
merge 2 verzije koda - cleaning up the mess | ivanhoe | Web aplikacije, web servisi i software | 5 | 03. 06. 2010. 15:16 |
Dva razlicita lang fajla - merge | pcigre | PHP | 8 | 09. 04. 2007. 22:31 |
Sinhronizacija (merge?) tabela | ivanhoe | SQL baze podataka - Sponzor: Baze-Podataka.net | 3 | 26. 02. 2007. 07:29 |
vracanje niza iz funkcije | bojan_bozovic | PHP | 4 | 06. 02. 2006. 10:23 |