Autor Zpráva
Tops
Profil *
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 *
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
Hledá něco jako array_merge_recursive
Oli
Profil *
Paráda, tohle jsem vůbec neznal ;-)
Tops
Profil *
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 *
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 *
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íky


Jan 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í...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0