متغییر global در function ها
سلام من متغییر global در داخل function زیر تعریف کردم ولی وقتی خارج از function صداش می زنم می گه که متغییر تعریف نشده کد من به این شکل هستش:
<?php
function salam() {
global $a;
$a='12';
}
echo $a;
?>
ولی وقتی کد رو به این صورت می زنم مشکل برطرف می شه دلیلش چیه؟
<?php
function salam() {
global $a;
$a='12';
}
salam();
echo $a;
?>
یعنی همیشه باید به این صورت عمل کرد که اول تابع رو اجرا کرد بعد اون متعییر شناخته می شه ؟
نقل قول: متغییر global در function ها
سلام و روز خوش
شما باید به scope دقت کنین:
در تکه کد اول وقتی echo $a اجرا میشه چون a$ تعریف نشده باید خطا بگیره و اگر از یک IDE برای کدنویسی استفاده کرده باشین حتما اینو گوشزد میکنه.
درستش اینجوریه:
<?php
$a = 'initial value';
var_dump($a);
salam();
var_dump($a);
function salam()
{
global $a;
$a = 'value set in salam function';
}
که خروجیش این میشه:
string(4) "abcd"
string(27) "value set in salam function"
دلیل این که تکه کد دوم بدون خطا اجرا میشه اینه که اونجا a$ در درون تابع salam گلوبال تعریف میشه،
وگرنه بدون اون این کد هم روی echo $a خطا میگیره.