Autor Zpráva
Radim24
Profil *
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
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
Mne to tiež funguje ako má (PHP 5.2.5).
Anonymní
Profil *
jj presně Tvrdlíku mě to taky funguje.. :)
Radim24
Profil *
Tak to jsem z toho jelen!
Radim24
Profil *
Vytrhl jsem to ze skrayptů, možná je někde nějaká vnější příčina, kterou si neumím vysvětlil
Nox
Profil
die($GLOBALS["pass"]) ?
Radim24
Profil *
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 *
Tedy vyřešeno:

test();
print_r($GLOBALS["mujpokus"]); // vrací 10
die();
Radim24
Profil *
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
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 *
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 *
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
Radim24
Profil *
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.

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: