Autor Zpráva
Andy
Profil *
Ahojte. Mam nasledujuci problem. Mam script v ktorom vytahujem z databazy jednotlive polozky a davam ich do premennych tymto sposobom:
$nieco->$vyber('nieco');
$nieco2->$vyber('nieco2');
atd..
S tymto potom pracujem..
Problem je, ze tieto premenne taham aj do funkcii kam s ami ale uz nedostanu.
Priklad:
**************
function menu ()
{echo "<a herf..>$nieco"</a>}
**************
Samozrejme funguje to ak dam do zatvoriek tej funkcie $nieco.
teda:

**************
function menu ($nieco)
{echo "<a herf..>$nieco"</a>}
**************

No ja taham funkciu menu z inej funkcie, v ktorej zase musim definovat v zatvorkach $nieco aby sa preniesla.

Moja otazka znie: Da sa premenna $nieco globalne definovat pre cely script?
Inak povedane, da sa definovat tak aby som nemusel stale doplnat premenne do tych zatvoriek funkcie?
Viem ze existuje nieco ako $GLOBALS ale neviem ako to pouzit pre tento pripad (a ci vobec)
Dakujem za rady..
djlj
Profil
global $nieco;

Pak k tomu přistupuješ jako $GLOBALS['nieco'];
Andy
Profil *
Super!
Vyskusam, uvidim.

Nech Ta $GLOBALS ['php_boh']; ochranuje!
krteczek
Profil
djlj:myslím že mícháš hrušky s jablky, $GLOBALS["neco"] je jiná proměnná, přistupuje se k ní stejně jako k jiným superglobálním proměnným, nemusí se používat global $neco; aby se mohla použít kdekoliv ve scriptu...
Andy
Profil *
krteczek: Hm.. pomohol by priklad..
nightfish
Profil
Andy
$a = 1;


function zmenA() {
global $a;
$a++;
}

$b = 1;

function zmenB() {
$GLOBALS['b']++;
}

echo "a = $a<br>";
zmenA();
echo "a = $a<br>";
echo "b = $b<br>";
zmenB();
echo "b = $b<br>";


EDIT: opraveno $_GLOBALS na $GLOBALS (za tyhle nekonzistence bych vývojáře PHP střílel...)
krteczek
Profil
Omlouvám se, pravda je někde uprostřed:
Ano jsou to dva přístupy k jedné a té samé proměnné.
Rozdíl mezi nimi je v tom, že u $GLOBALS['aaa'] vidíme hned, že se jedná o globální proměnnou, Je dostupná všude ve scriptu (i ve funkcích) bezpoužití global $GLOBALS['aaa'];

Takže chceš-li používat globální proměnné, používej je jako $GLOBALS['promenna'], lépe se budou tvé scripty číst i tobě samotnému.
a tady je ten malý example:

<meta http-equiv="content-type" content="text/html;charset=utf-8">
<?php
function a()
{
return '<br><br>funkce a():<br>$GLOBALS["aaa"] = ' . $GLOBALS['aaa'] .'<br>aaa = ' . $aaa;
}
function b()
{
global $aaa;
return '<br><br>funkce b():<br>$GLOBALS["aaa"] = ' . $GLOBALS['aaa'] .'<br>aaa = ' . $aaa;
}
function c()
{
$GLOBALS['aaa'] = 'Něcojiného';
return '<br><br>funkce c():<br>$GLOBALS["aaa"] = ' . $GLOBALS['aaa'] .'<br>aaa = ' . $aaa;
}
$GLOBALS['aaa'] = 'Dobrý den';
echo '<br><br>nastavená: $GLOBALS["aaa"] = ' . $GLOBALS['aaa'];
$aaa = 'Jak se máte';
echo '<br><br>nastavená: $aaa = ' . $aaa;


echo '<br><br>1. mimo funkci<br>$GLOBALS["aaa"] = ' . $GLOBALS['aaa'] .'<br>aaa = ' . $aaa;
echo a() . b() . c();
echo '<br><br>2. mimo funkci<br>$GLOBALS["aaa"] = ' . $GLOBALS['aaa'] .'<br>aaa = ' . $aaa;
?>
djlj
Profil
krteczek
Já to tak ale na jednom webu používám. Ale pokud jsem plácl nějakou blbost, tak se teda omlouvám…
nightfish
Profil
djlj
Já to tak ale na jednom webu používám. Ale pokud jsem plácl nějakou blbost, tak se teda omlouvám…
to ne, ale smíchal jsi dvě věci dohromady - buď se používá ve funkcích $GLOBALS['jmenopromenne'] a nebo
global $jmenopromenne; a pak už jenom samotné jméno proměnné
(samozřejmě když použiješ obojí zároveň, tak to bude taky fungovat)

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:

0