Poradí někdo jak vytvořit pole z pole v PHP
Ahoj, mám takové pole které se mění obsahem i hloubkou
$arr = array();
$arr['a'] = array('FOO' => 'a', 'BAR' => 'a2');
$arr['a']['b'] = array('FOO' => 'ab', 'BAR' => 'ab2');
$arr['a']['b']['c'] = array('FOO' => 'abc', 'BAR' => 'abc2');
pak znám klíče pro nová pole která potřebuji vytvořit které jsou totožné s klíči které potřebuji vypsat
$dis = array('a', 'b', 'c');
a takové pole potřebuji ve finále získat
$newarr = array();
$newarr['a'] = array('FOO' => 'a', 'BAR' => 'a2');
$newarr['b'] = array('FOO' => 'ab', 'BAR' => 'ab2');
$newarr['c'] = array('FOO' => 'abc', 'BAR' => 'abc2');
Chodí sem nějaký prosík ? Díky za pomoc...
Ja osobne si myslim ze priradenim
$arr['a']['b'] = array('FOO' => 'ab', 'BAR' => 'ab2');
si znicis to
$arr['a'] = array('FOO' => 'a', 'BAR' => 'a2');
pretoze po priradeni $arr['a']['b']=neco bude to $arr['a'] ukazovat na tu dalsiu dimenziu, nie?
Jak mas tam tie data naozaj ulozene?
Ne, nic si nezničím, od toho je tam ten další klíč...
Neni tam dalsi klic. Ked mas dvojrozmerne pole tak prvy rozmer je ukazatel (dereferencia) na cely druhy rozmer. Si to skus alebo napis sem jasne (konkretnejsie) ze jak presne tam mas ulozene tie vstupne data. Lebo tak jak si to pisal to IMHO neni mozne aby to tak bolo ulozene.
Tak si to dump-ni , uvidíš, že tam bude vše potřebné..
var_dump($arr);
No tak sem pastni ten var_dump vypis, nech nam je jasne konecne ze jak tam mas tie data.
var_dump($arr);
Takze 'FOO' a 'b' je na stejnej urovni. Ked to bude nahodou stejne (kluc = 'FOO' alebo kluc = 'BAR') tak si prepises zaznam kluca. To ti nevadi?
Jake mas skutocne realne data? Ne foo a bar.
Dereferencovat to mozes pomocou cyklu, v ktorom si vyberes vzdy dalsi podkluc. Napr.
$deref = $arr
a cyklus pre kazdy prvok z $kluce
{
$deref = $deref[prvok_z_kluce];
$newarr[prvok_z_kluce]['FOO'] = $deref['FOO'];
$newarr[prvok_z_kluce]['BAR'] = $deref['BAR'];
}
apod. Pisem zhlavy tak si to skus, neviem nabeton ci to takto presne pojde tak jak chces.
P.S. a nemozes napisat $newarr[prvok_z_kluce] = $deref, pretoze to nemas oddelene od dalsich podpoli, ale mas tam totalny datovy maglajz. preto priradujem po jednom tie prvky.
Eh, zajímavý postřeh, asi jsem už unavený, nic méně k tomu by ale nemělo nikdy dojít, ne? jelikož by se to mělo volat vždy s [FOO] nebo [BAR]
Jak zabranis tomu aby kluc nebol 'FOO' ? Neni uzakonene ze kluc moze byt len 'a' alebo 'b'.
Najlepsie riesenie na ten tvoj problem je tresnut po hlave tomu kto vymyslel to multidimenzionalne pole, a opravit ten kod ktory ho vytvara tak aby vytvaral pole normalne :)
Pekne reseni. Pokud to dobre chapu, tak predpoklad zde je, ze klice v $arr a jim odpovidajici hodnoty v $dis musi mit vsude stejnou posloupnost? Jinak receno postupna uroven zanorovani v $arr musi byt stejna jako je v $dis.
Tak si zadal ty to zadanie.
Nevysvetlil si jak sa chces podla kluca 'a','x','y' dostat k polu ['a','b','f','t','y']. Alebo co tam mas skutocne za polia.
Ja jsem nic nezadal , take nevim jak to Marrek presne myslel. Mozna ze mu to losovo reseni bude stacit. Jen se ptam, jestli jsem ten losuv kod dobre pochopil, protoze je to zajimave reseni a nemam kde si ho ted vyzkouset.
Jaj sorry, sa mi poplietli nicky :)
Ano je to pekne riesenie a funguje tak jak pises.
Ked to ma byt uplne nahodne a hladas prvy vyskyt kluca, tak potrebujes pre kazdy znak z $dis prehladat cele to pole (nedestruktivne) a hladat prvy vyskyt. T.j. vnorene cykly alebo rekurzivna funkcia ktora prehlada cele pole, a zavolas ju pre kazdy z tych znakov z $dis.
P.S> na prehladavanie pola si uz daval vyssie link, tak si to len trochu uprav.
t.j. upravene to rekurzivne hladanie na hladanie vyskytov kluca a ne hodnoty
a z navratovej hodnoty pouzijes results['FOO'] a results['BAR'] a zbytok zahodis, ptz v results bude aj to podpole ktore nechces.
Áno, je to tak. Keď na to pozerám teraz za denného svetla, tak po správnosti by malo byť:
Alebo by tam stačil aj jednoduchý foreach:
Ahoj.
co přesně dělá tento řádek, můžete prosím ten kód rozepsat do více řádků pro pochopení? Děkuji.
Myslim, ze nejen me by ciste ze zvedavosti zajimalo z ceho vznika takovahle struktura. Ja si totiz nedokazu predstavit na co to realne aplikovat. Trosku to pripomina system adresaru a souboru, kdy by mohlo mit nejaky vyznam to razeni podle abecedy. Hloda mi to v hlave , prozrad prosim Marrku k cemu to slouzi, z ceho to vznika, nebo nejaky realnejsi uryvek dat z toho pole...