زمانی که در PHP ، یک تابع تعریف می کنیم، متغیرهای تعریف شده درون تابع، به صورت محلی (local) خواهند بود. منظور از محلی بودن متغیرها، این است که این متغیرها، تنها درون تابع وجود خواهند داشت و در بیرون از تابع، نمی توان از آنها استفاده نمود. برای درک بهتر این موضوع، به کدهای زیر توجه کنید :
php? >
;my_variable = 1
}()function my_function
;my_variable = 2
{
;()my_function
;echo $my_variable
<?
ابتدا متغیر my_variable را برابر 1 تعریف کرده ایم. سپس یک تابع ساخته ایم و درون تابع ساخته شده، یک متغیر با همان نام my_variable تعریف کرده ایم که دارای مقدار 2 می باشد. سپس به تابع ارجاع داده ایم تا اجرا شود و در آخر نیز، مقدار متغیر my_variable را در خروجی چاپ می کنیم تا ببینیم برابر مقدار 1 است یا برابر مقدار 2 :
مشاهده می کنید که خروجی برابر 1 شده است. این نتیجه به این دلیل است که متغیر my_variable درون تابع، به صورت محلی (local) است، بنابراین در خارج از تابع، قابل استفاده نیست و بنابراین مقدار متغیر my_variable در خارج از تابع، همان طور که قبلا آن را تعریف کرده ایم، برابر 1 می باشد.
حال فرض کنید که بخواهیم مقدار یک متغیر را بتوانیم در داخل توابع نیز تغییر بدهیم، برای این منظور، باید آن متغیر را درون توابع، به صورت سراسری (global) تعریف کنیم. همان کد بالا را دوباره می نویسیم و این بار، متغیر my_variable را درون تابع، به صورت سراسری (global) تعریف می کنیم تا بتوانیم از درون تابع، مقدار متغیر را تغییر بدهیم :
php? >
;my_variable = 1
}()function my_function
;global $my_variable
;my_variable = 2
{
;()my_function
;echo $my_variable
<?
مشاهده می کنید که این بار، مقدار متغیر my_variable ، برابر 2 شده است، بنابراین توانستیم مقدار آن را از درون تابع، تغییر بدهیم.