Autor | Zpráva | ||
---|---|---|---|
WalWerin Profil * |
#1 · Zasláno: 9. 2. 2006, 17:03:36
potřebuju cyklem vygenerovat proměné a opravdu nevím jak, kvůli složitosti a délce méhoscriptu to ukáži takto:
$nazev = neco; $cislo = 1; $nazev$cislo = obsah; echo $nazev1; vím že to je špatně a určitě i blbost, ale nejjednodušeji jsem tím vyjádřil co potřebuji udělat tak prosím poraďte nejjednoduší možnosti co Vás napadnou (toto by sice šlo pomocí pole, ale to se mi pro ten můj cykl nehodí, určitě existuje i jiná možnost) předem díky ! |
||
jozob Profil |
#2 · Zasláno: 9. 2. 2006, 17:13:25
WalWerin
Presne to, čo si napísal je aj riešenie :-) Možno sa to nezdá, ale je to tak. Nazýva sa to chameleon premenná a funguje to. |
||
jozob Profil |
#3 · Zasláno: 9. 2. 2006, 17:17:11
Ešte na upresnenie príklad:
jednoduchy priklad: $a="b"; $b="ahoj"; echo $$a; //vypise "ahoj" zlozitejsi priklad: $a="b"; $b="c"; $c="d"; $d="e"; $e="ahoj"; echo $$$$$a; //vypise "ahoj" |
||
jozob Profil |
#4 · Zasláno: 9. 2. 2006, 17:29:29
WalWerin
Ale Tvoj kód je potrebné ešte trošku upraviť - chameleon premenna musi vyzerat tak, ze dolare su na zaciatku, v Tvojom prípade teda takto: $nazev="neco"; |
||
WalWerin Profil * |
#5 · Zasláno: 9. 2. 2006, 17:35:21
no jo, tohle funguje, jenže já potřebuju mít promenou s názvem, $nazev a s číslem protoze jich muze byt víc takže mi ten cykl vygeneruje
$nazev1 = prvni; $nazev2 = druha; $nazev3 = treti; $nazev4 = ctvrta; a ne že si budu odkazovat promenou (to cislo mi bude prave generovat cykl) $pocet = 5; for($i=1; $i<=$pocet; $i++) { $nazev$i = vysledek; } a pak prostě dál už potřebuju volat tu proměnou jako $nazev1, $nazev2 ..... $nazev5 a to právě nevím jak :( |
||
Meldo Profil |
#6 · Zasláno: 9. 2. 2006, 17:42:08
takto?
for ($i = 1; $i <= $pocet; $i++ ) { inak nieco podobne riesim tu http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=19 640 tak obcas kukni ci sa ti to nebude hodit. |
||
WalWerin Profil * |
#7 · Zasláno: 9. 2. 2006, 18:10:55
nn to co řešiš tam je trošku něco jinýho, ty mi asi nerozumíš:( prostě potřebuju spožit název proměný ze dvou proměných
$první = neco; $druhá = ono; $prvni$druha = tamto; echo $necoono; // mělo by vypsat: tamto rozumíš? :( název proměný složit z jiné proměné |
||
Meldo Profil |
#8 · Zasláno: 9. 2. 2006, 18:20:15 · Upravil/a: Meldo
tak snad takto. inak neviem co myslis.
$prvni = neco; vypise necoono. |
||
Meldo Profil |
#9 · Zasláno: 9. 2. 2006, 18:22:47
alebo takto?
$prvni = neco; |
||
WalWerin Profil * |
#10 · Zasláno: 9. 2. 2006, 18:28:30
já nechci dát do obsahu víc proměnecjch, to umim, ale potřebuju dát víc proměných do názvu. Prostě aby obsah jedný proměný byl ještě s něčim jinym název jiný proměný
$jedna = 1; teď potřebuju vytvořit proměnou která bude mít název "promena1" a tu jedničku nechci napsat ale pouzit k tomu promenou $jedna. Takže logicky bych napsal $promena$jedna = neco; ale to nefunguje, hodí to error |
||
Meldo Profil |
#11 · Zasláno: 9. 2. 2006, 19:00:48
a ked das medzi $promena a $jedna bodku "."?
tj. $promena.$jedna |
||
WalWerin Profil * |
#12 · Zasláno: 9. 2. 2006, 19:08:35
a poté: Parse error: parse error, unexpected T_DNUMBER, expecting ',' or ';' in C:\srv\Apache2\Apache2\htdocs\index.php on line 41 |
||
WalWerin Profil * |
#13 · Zasláno: 9. 2. 2006, 19:33:48
ale když dám
tak to jde, jenže takhle mi to je k ničemu protože pokud by se ten cykl vygeneroval vícekrát (což bude většina případů) tak by se mi ta původní přepsala a nemusel by tam bejt ten cykl |
||
jozob Profil |
#14 · Zasláno: 9. 2. 2006, 20:13:08
for($i=1; $i<=10; $i++) Toto vytvorí desať premenných - neco1 až neco10 a vloží do nich text obsah. |
||
printf Profil |
#15 · Zasláno: 9. 2. 2006, 20:17:56
toto by sice šlo pomocí pole, ale to se mi pro ten můj cykl nehodí, určitě existuje i jiná možnost
šlo by upřesnit proč se nehodí pole? třeba by to i pro parser bylo příjemnější a tím by skript byl rychlejší |
||
jozob Profil |
#16 · Zasláno: 9. 2. 2006, 20:23:26
Ako hovorí printf, sprav to poľom... To moje riešenie hore je tiež určite funkčné, ale načo sa trápiť:
for($i=1; $i<=10; $i++) A hotovo... |
||
WalWerin Profil * |
#17 · Zasláno: 9. 2. 2006, 20:25:40
Moc díky, ani nevíš jak si mi pomohl !!!
ale trvalo mi než se mi podařilo vysvětlit co potřebuji co ? :-) |
||
jozob Profil |
#18 · Zasláno: 9. 2. 2006, 20:30:31
WalWerin
Ja som hneď vedel, čo chceš, ale chcel som Ti vysvetliť tie chameleon premenné :-) Síce riešenie bolo jednoduché a pre parser prijatelnešie, ale chameleon je krása nie? :-) Je to podobné ako s rekurziou. Vo veľa prípadoch sa dá rekurzia naradiť cyklom (hlavne chvostová), ktorý je menej náročnejší, ale rekurzia je krásna :-) |
||
printf Profil |
#19 · Zasláno: 9. 2. 2006, 20:37:45
Rekurze a chameleoni jsou rozhodně zajímavé, ale podle mne jim krásu dodá právě vhodné použití, řešící nějaký komplikovaný úkol, který by třeba ani jinak řešit nešel. V jiném případě to spíš svědčí o nerozumném programátorovi nebo touze udělat kód nesrozumitelným :-)
|
||
jozob Profil |
#20 · Zasláno: 9. 2. 2006, 20:39:58 · Upravil/a: jozob
printf
Tak tak... Ako hovoríš. Rekurzia a chameleóni sú proste programátorské lahôdky. :-) OT: A najkrajšia rekurzia v C: int main() :-D |
||
WalWerin Profil * |
#21 · Zasláno: 9. 2. 2006, 21:04:49
:-) hele ja jsem začátečník chlapy. php se učím maximálně čtvrt roku. a založte si jiný tema na tyhle vaše profesionality, jinak vážně díky.
|
||
mila Profil |
#22 · Zasláno: 10. 2. 2006, 18:01:30
Ale je to pěkná blbost. |
||
WertriK Profil * |
#23 · Zasláno: 11. 2. 2006, 03:28:44
Ted jsem resil stejny problem, jen jsem to nemohl udelat pomoci pole ale muselo to byt ${$neco}; problem nastal s zapisem do $_POST
Zkousel jsem $_POST[${$neco}]; i $_POST["${$neco}"], ale bez uspechu. Nakonec jsem to vyresil tak ze jsem si pole $_POST extractnul a bylo. Ale zajimalo by me jak by jste to udelali vy tak aby tam bylo $_POST .... |
||
jozob Profil |
#24 · Zasláno: 11. 2. 2006, 07:38:10
WertriK
Tak s poľom sa to nedá (pokiaľ viem)... |
||
mila Profil |
#25 · Zasláno: 11. 2. 2006, 23:54:33
Nějak nechápu, na co všichni tuhle kravinu potřebují.
Pokud jde o to pole, tak tam to snad funguje samo: echo $_POST[ $foo ]; echo $_POST[ $foo . $bar ]; echo $_POST[ nejakaFunkce ($bar) ]; |
||
jozob Profil |
#26 · Zasláno: 12. 2. 2006, 07:06:18
mila
My hovoríme o chameleón premennách, Tvoj uvedený príklad je úplne niečo iné. V chameleón premenných ide o to, že sa obsah jednej premennej použije ako názov premennej. |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0