Data s pola s pouzitim klucov v inom poli – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Data s pola s pouzitim klucov v inom poli – PHP – Fórum – Programujte.comData s pola s pouzitim klucov v inom poli – PHP – Fórum – Programujte.com

 

marioff0
Expert
2. 4. 2011   #1
-
0
-

Caute,

potreboval by som trochu poradit. Mam multidimenzionalne pole a potrebujem z neho ziskat urcite data. Kluce mam vsak ulozene v inom poli napr. array('prvy_kluc','druhy_kluc') , cize potrebujem ziskat data z $pole['prvy_kluc']['druhy_kluc']

$p='pole[\'prvy_kluc\'].....

echo $$p;
nefunguje

dopredu neviem kolko klucov bude mat, teda do akej hlbky budem tahat data. Nevie ma niekto postrcit spravnym smerom... bohuzial ani neviem co mam presne zadat do googla ako keywordy :(. dik

PS: upravim sa: potreboval by som ziskat premennu premennej... obsah ma vlastne nezaujma...

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
KIIV
~ Moderátor
+43
God of flame
2. 4. 2011   #2
-
0
-

To marioff : co $p = 'pole'; $$p['prvy_kluc'];
pripadne eval (ale to bude spis overkill)

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
marioff0
Expert
2. 4. 2011   #3
-
0
-

teda mam napr.

self::$vars['prvy_kluc']['druhy_kluc'];
ale kedze zanoreni moze byt rozny pocet potreboval by som spravit nieco ako premennu premennej aby som len jednoducho pouzival
// nejaka konstrukcia napr. pomocou podmienok

$premennaPremennej = 'vars[.....][.....]';
// a dalej uz len pouzival:
self::$$premennaPremennej;


dana premenna sa pouziva vela krat v danom kode, a keby som to mal urobit zakazdym pomocou podmienok tak ten kod bude mat kilometer na dlzku :(

uz som prehladal cely manual php ohladom premennych ale nic podobne som tam nenasiel...

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
KIIV
~ Moderátor
+43
God of flame
2. 4. 2011   #4
-
0
-

no spis nechapu ucel toho.. na co ti to bude?
(jako aplikace ne o co se snazis ted abstraktne)

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
marioff0
Expert
2. 4. 2011   #5
-
0
-

potrebujem to pre akusi kolekciu internych dat. pri behu aplikacie do nej ukladam rozne data, napr. cesty, data o prihlasenom uzivatelovi,atd... teda vsetko co s aplikaciou suvisi a co potrebujem vyuzivat aj v inych triedach bez toho aby som im musel podsuvat instanciu.

V hociajakej triede ulozim: Data::setRoutePath('nejaka_cesta'); a v inej triede len zavolam Data::getRoutePath(); kde kazdym velkym pismenom zacina novy kluc (v tomto pripade mi vznikne array('route','path'). Teda ak zavolam napr. metodu getRoute() tak chcem dostat vysledok array( 'path' => 'nejaka_cesta') . Vsetko samozrejme z uzitim magie...

zabudol som napisat ze vsetko sa uklada do statickeho pola, z ktoreho to potom taham...

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
KIIV
~ Moderátor
+43
God of flame
2. 4. 2011   #6
-
0
-

no stejne nevidim duvod proc to delat takto.. co je treba sloziteho na get('route/path/...') set('route/path/...',$data) ?
timto pristupem si muzes udelat i pristup k xml a podobnejm nesmyslum :D

ale treba jen nechapu na co to chces pouzit

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
marioff0
Expert
2. 4. 2011   #7
-
0
-

samotny nazov metody je uz v podstate identifikacia kluca v poli...

teda zjednodusene.... (mam tam viac funkcii, nie len tieto)
Data::getNazovKluca() = return $vars['nazov']['kluca'];
Data::setNazovKluca('obsah') = $vars['nazov']['kluca']=$argument;

mne to uz v podstate funguje, len na sposob podmienok

if ($pocetKlucovZnazvuMetody==2) { return self::$vars[$prvaCast][$druhaCast]; }

elseif ($pocetKlucovZnazvuMetody==1) { return self::$vars[$prvaCast]; }....


a kedze viac moznych akcii (get,set,add,del.....) tak tie podmienky musim opakovat cim sa mi zneprehladnuje kod...

myslel som zeby slo tu premennu $vars[......][.....] nejakym sposobom vyrobit ako premennu podla poctu klucov a potom dalej uz len pohodlne volat return self::$$vyrobenaPremenna; kde $vyrobenaPremenna=='vars['.$prvaCast.']['.$druhaCast.']';

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
insider0
Věrný člen
2. 4. 2011   #8
-
0
-

Nahodim prvni napad, co mam v hlave. Jak jsem to pochopil, pri hledani te hodnoty uz znas presny pocet parametru v poli s klici, takze se da pouzit napr foreach

$klice = array('route','path');

$data = array('route' => array('path' => 'localhost'));
$promenna =$data;
foreach($klice as $key){
$promenna = &$promenna[$key]; // reference, aby se mohlo zapisovat/mazat ...
}
echo $promenna; // localhost

ted me napada, aby to furt neprojizdelo cyklus, tak si udelat "cache"
self::cache[implode('|',$klice)] = $promenna;

Nahlásit jako SPAM
IP: 78.45.33.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
marioff0
Expert
4. 4. 2011   #9
-
0
-

vcera som prisiel na jeden nedostatok... ked vlozim data do pola iba s jednym klucom, samozrejme vymaze vsetky v nej zanorene (skor ma to neviem preco nenapadlo)... teda napr. setUser('data') = $vars['user'] = 'data' cim stratim vsetky data ktore tam predtym boli... prerobil som to tak ze su maximalne 2 kluce, ak bude jeden prida sa automaticky druhy ( napr.0)... teda uz nemusim riesit nic z vyssie uvedeneho... diki za snahu pomoct obom.... :smile7:

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 34 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý