

PHP - Globálna premenná po unset() získa hodnotu
Mám v skratke takýto kód:
function asd()
{
global $a;
$a = 1;
echo $a;
funkcia spracuvajuca $a;
unset($a);
echo $a; //nehlasi mi to nic a isset($a) hlasi, ze neexistuje
return;
}
{
asd();
echo $a; //hlasi mi to 1 a isset($a) hlasi, ze existuje
$a[1] = 1;
}
Posledný riadok mi hádže hlášku:
Warning: Cannot use a scalar value as an array in D:\xampp\htdocs\...
Verzia PHP 5.2.8
Viete mi to vysvetliť? Zabil som hľadaním chyby 2 hodiny. Podľa mňa to nie je štandardné správanie.
Snaz sa nepouzivat globalne premenne. Je to zly zvyk je z toho len chaos a bezpecnostne rizika. Da sa to aj bez nich.
Error ti hlasi mozno preto lebo si uz $a pouzil (echo), skus ju predtym nepouzit. Mozno potrebujes definovat $a ako global uz v tom hlavnom programe. Ked nie tak potom nejaky iny php expert ti to vysvetli, ja viac neviem
Išiel som po riadkoch. Pred return vo funkcii si to hodnotu nepamätalo a po return v hlavnom kóde za volaním funkcie áno.
Edit:
Globálne funkcie tam používam preto, lebo je tam tak veľa parametrov, že som ich začal používať. Momentálne je to taký veľký kód už, že už to nemá zmysel meniť. Ďalším problémom je aj to, že v mnohých funkciách potrebujem aj 2 alebo 3 výstupné premenné. Teraz by som to možno aj inak robil, ale už je to jedno.
Precitaj si toto unset tam to mas presne popisane ze v com je problem v tvojom priklade.
P.S. stale plati ze snaz sa globalom vyhybat. nefunguje to tak ako si predstavujes. Funkcia moze mat parametre - tak ich vyuzivaj namiesto globals.
Už rozumiem, ďakujem. Myslel som, že je to chyba v PHP, lebo predtým mi to nerobilo. Lenže predtým to nebolo vo funkcii.