Autor | Zpráva | ||
---|---|---|---|
Tops Profil * |
#1 · Zasláno: 10. 5. 2014, 22:36:14
Ahoj, poradí prosím někdo, jak pomocí takové metody přidavát vnořené pole abych nepřepsal ty stávající?
public function set($key, $value){ $this->data[$key] = $value; } Zkoušel jsem to takto, ale nejde mi to... $arr['aaa']['bb'] = 'bbb'; $arr['aaa']['cc'] = 'ccc'; $class->set('foo', $arr); Děkuji |
||
Oli Profil * |
#2 · Zasláno: 10. 5. 2014, 23:04:33
Co tím myslíš? Když nad tím tak přemýšlím, tak tohle by mělo fungovat. Co ti na tom nejde? Pokud chceš aby ti to nepřepsalo už existující klíč, tak by sis musel dát nějaký ověření něco jako array_key_exists a nějakým způsobem změnit klíč, zavolat výjimku, nebo jinak ošetřit...
|
||
Jan Tvrdík Profil |
#3 · Zasláno: 11. 5. 2014, 00:09:06
Hledá něco jako array_merge_recursive
|
||
Oli Profil * |
#4 · Zasláno: 11. 5. 2014, 08:58:58
Paráda, tohle jsem vůbec neznal ;-)
|
||
Tops Profil * |
#5 · Zasláno: 11. 5. 2014, 11:56:45
To nehledám, tady je celý příklad který nefunguje
http://pastebin.com/Qe8TRDaJ děkuji |
||
Jan Tvrdík Profil |
Tops:
„To nehledám“ To je zřejmě právě ta chyba =) Protože jestli následující kód ten problém neřeší, tak nevím, co chceš public function set($key, $value){ if (isset($this->data[$key]) && is_array($this->data[$key])) { $this->data[$key] = array_merge_recursive($this->data[$key], $value); } else { $this->data[$key] = $value; } } Jinak ten kód je celý děsná blbost. V konstruktoru bys neměl mít takovouhle logiku a celý problém by měl vyřešen bez mergování polí nebo alespoň nepojmenovat metodu set , když dělá merge.
|
||
Tops Profil * |
#7 · Zasláno: 11. 5. 2014, 13:10:30
Jan Tvrdík:
Jak jsem již psal, tohle nehledám, jeliož nechci žádná pole spojovat, chci je jen pole naplnit ale nepřepisovat. Logika v konstruktoru je uvedena jen z důvodu kratšího kódu pro tento dotaz zde. |
||
Jan Tvrdík Profil |
Tops:
V tom případě nevím co chceš. Jak by se to chování mělo lišit od toho, které navrhuji? Co by mělo být výstupem? |
||
Tops Profil * |
#9 · Zasláno: 11. 5. 2014, 13:26:08 · Upravil/a: Tops
Jan Tvrdík:
Honzo teď mě tak napadlo, nevyřešil by se celý problém přidáním závorek ve 4 řádku? $this->data[$key][] = $value; . DíkyJan Tvrdík: „Co by mělo být výstupem?“ něco takového... $arr['jahody']['male'] = 'malejahody'; $arr['jahody']['velke'] = 'velkejahody'; $arr['banany']['zrale'] = 'zralebanany'; $arr['banany']['zelene'] = 'zelenebanany'; $arr['trnky'] = 'dovoz'; $arr['trnky'] = 'cz'; Jan Tvrdík: „Jak by se to chování mělo lišit od toho, které navrhuji?“ Chtěl bych to vyřešit bez toho mergování... |
||
Časová prodleva: 10 let
|
0