Autor | Zpráva | ||
---|---|---|---|
Radim24 Profil * |
#1 · Zasláno: 20. 7. 2008, 00:36:25
Ahoj, mám takový trapný problém. Snad mi tu někdo poradí, protože to nechápu. S globálními proměnnými pracuji dlouho, ale nikdy jsem neměl žádný problém, až teď:
function test() { global $pass; $pass="10"; } $pass=1; test(); die($pass.""); Osekal jsem to jak jsem mohl. Die() by mělo vracet 10, ale vrací 1. Nechápu. $pass je přece global. V čem je problém? Dík za radu. |
||
Jan Tvrdík Profil |
#2 · Zasláno: 20. 7. 2008, 00:52:27
Radim24
Mě to vrací 10 (PHP 5.3.0-dev) a předpokládám, že stejně se to bude chovat na všech verzích PHP. |
||
tiso Profil |
#3 · Zasláno: 20. 7. 2008, 00:57:54
Mne to tiež funguje ako má (PHP 5.2.5).
|
||
Anonymní Profil * |
#4 · Zasláno: 20. 7. 2008, 00:59:40
jj presně Tvrdlíku mě to taky funguje.. :)
|
||
Radim24 Profil * |
#5 · Zasláno: 20. 7. 2008, 08:03:17
Tak to jsem z toho jelen!
|
||
Radim24 Profil * |
#6 · Zasláno: 20. 7. 2008, 08:04:08
Vytrhl jsem to ze skrayptů, možná je někde nějaká vnější příčina, kterou si neumím vysvětlil
|
||
Nox Profil |
#7 · Zasláno: 20. 7. 2008, 08:09:59
die($GLOBALS["pass"]) ?
|
||
Radim24 Profil * |
#8 · Zasláno: 20. 7. 2008, 08:42:55
Pánové. S proměnnou mujpokus.
test(); die($GLOBALS) ; // [mujpokus] => 10 ale test(); print_r($mujpokus); // vrací na obrazovce 1 ale test(); die($mujpokus.""); // nevrací na obrazovce nic !!! |
||
Radim24 Profil * |
#9 · Zasláno: 20. 7. 2008, 08:45:03
Tedy vyřešeno:
test(); print_r($GLOBALS["mujpokus"]); // vrací 10 die(); |
||
Časová prodleva: 16 dní
|
|||
Radim24 Profil * |
#10 · Zasláno: 5. 8. 2008, 13:50:39
Tak sem znovu píšu abych vás informoval o záhadném chování global. Předtím byl problém, že proměnná global nešla zpřístupnit z v věnjším prostředí, tj. mimo fnc. Dělal jsem to tak, že jsem musel nastavit $var=$GLOBAL["var"]; to zabralo, protože ta proměnná tam byla. Po čase, po nějakých těch předělávkách, jsem to zkusil zpřístupnit klasicky, a normálěn to fungovalo.
No a nyní zase tento problém: volám global mimo fnc, před fnc... proměnná je nastavena volám global uvnitř funkce, proměnná nastavena není (nic uvnitř pole GLOBALS) volám global mimo fnc, za fnc... proměnná je nastavena Přitom struktura fnc je tak jednoduchá, že není možné, aby se to po "cestě" někde vymazalo a pak se to zase objevilo. Zkouším to zpřístupnit hned na začátku fnc a nic... Nechápu. Setkali jste se někdy s něčím takovým? |
||
pmg Profil |
#11 · Zasláno: 5. 8. 2008, 17:04:04
Hledal jsem na http://bugs.php.net/ a nějaké problémy ve starých verzích byly. Zkus prosím, co vrací phpversion();
global $pass; by se mělo chovat stejně jako $pass = &$GLOBALS['pass']; možná to vyzkoušej. |
||
Radim24 Profil * |
#12 · Zasláno: 5. 8. 2008, 18:00:48
Já to teď nemohu spustit, nějak mi to nejede tahle fnc. Myslím, že mám php 4.3.1 .
myslím, že tohle by mohlo být ono: http://bugs.php.net/bug.php?id=23811 |
||
Radim24 Profil * |
#13 · Zasláno: 5. 8. 2008, 19:00:23
Nevím co se stalo, ale vůbec mi to php nejede. Skoro vůbec. nechápu nic. Tak se teď aspoň snažím rozjet php přes java server, jestli to vůbec jde, že bych to odladil v tom Eclipse,
jenže mám problém s vybráním správného "php executable" a nastavením, jestli mi někdo poradí, tak dík: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=11&topic=6 5906 |
||
Časová prodleva: 28 dní
|
|||
Radim24 Profil * |
#14 · Zasláno: 2. 9. 2008, 13:04:45
Opět se mi vyskytl problém s tím global, tentokrát chci ale sem napsat jaké jsem použil jednoduché řešení.
Symptom: Uvnitř fnc nelze použít global, resp. global se neprojeví. Ač byla proměnná nastavena ve vnějším prostředí, uvnitř fnc, není dostupná. Řešení: function mojefnc (argument1, argument2, ... $GLOBALS) { } mojefnc (argument1, argument2, ... $GLOBALS); Jednoduché ale účinné na všechny proměnné uvnitř $GLOBALS. |
||
Časová prodleva: 16 let
|
0