Autor Zpráva
Jakuje
Profil
Nevím jestli je to chyba, ale přijde mi to dost divné. Dlouho jsem nad tím seděl ve složitější situaci a dostalo mě když jsem si to napsal takto zjednodušeně a nastalo to stejné jako předtím. Zvažte: Co by měl vypsat tento kód:

<?php

function first(){
global $variable;
$variable = "123";
}
function second(){
return $variable;
}

first();
echo second(); // Nevypíše mi nic
echo $variable; // Vypíše mi 123
?>


Jaký na to máte názor? Já mám dojem, že když už je něco "globální", tak by to mělo být globální, ne?

Ještě edit: PHP verze: 5.1.2
tiso
Profil
Ono to funguje inak - pomocou global preberáš do funkcie hodnotu globálnej premennej, keď ho tam neuviedieš tak premenné mimo funkciu funkcia nevidí...
Alphard
Profil
global $variable;
musí být v každé funkci, ve které s ní chceš pracovat jako s globální
Jakuje
Profil
A mimo funkce už globální je automaticky, ano? OK.
Takže stačí do té funkce připsat global $variable; a půjde to?

OK, funguje to. Díky.
tiso
Profil
Áno... Ale lepšie je globálne premenné nepoužívať! Od toho majú funkcie parametre...
Jakuje
Profil
Áno... Ale lepšie je globálne premenné nepoužívať! Od toho majú funkcie parametre...

Taky používám poprvé (a proto takové věci nevím). A když je to globální proměnná co je potřeba všude a ještě k timu ji definuji v jiné funkci, tak jinak by se mi to asi nepovedlo. Příště možná zase vymyslím nějaké elegantnější řešení. Však chybami se člověk učí, ne ... :-)
tiso
Profil
lepšie takto:
<?php


function first()
{
return 123;
}

function second($variable)
{
$variable+=$variable;
return $variable;
}

$var=first();
echo $var; //123
echo second($var); // 2x123
?>

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: