) متغیرهای محلی :

با توجه به تعریف  قلمرو متغیر ، تعریف یک متغیر در داخل یک تابع با بیرون یک تابع تفاوت دارد ، برای درک این مساله قطعه کد زیر را مشاهده نمائید :

به نظر شما ، خروجی کد فوق چیست؟؟؟ در کد فوق ، در ابتدا یک متغیر x با مقدار ۲۰ تعریف شده است ، سپس در داخل تابع milad یک متغیر با همان نام (x) با مقدار ۱۰ تعریف شده است (این دو متغیر با یکدیگر تفاوت دارد!) ، بعد از فراخونی  و چاپ متغیرها خروجی ها با یکدیگر تفاوت دارد ، متغیر x درون تابع یک متغیر محلی می باشد ، تغییر مقدار متغیر x محلی ، هیچ ارتباطی با متغیر x که دارای مقدار ۲۰ است ، ندارد .

۲)متغیرهای جهانی :

در مقابل متغیرهای محلی، متغیرهای جهانی وجود دارد ، که آنها را می توان در هرجایی از برنامه مورد استفاده قرار داد و آن آن را تغییر داد ، برای این که یک متغیر را به صورت جهانی تعریف نمائید ، از کلمه کلیدی global استفاده می کنیم .

به مثال زیر توجه نمائید :

مقدار خروجی ما برابر با ۲۱ می باشد ، چون متغیر x را در کلمه کلیدی global قرار داده ایم ، اما اگر کلمه global را حذف نمائید ، خروجی برابر با یک می شود .

یک روش دیگر برای متغیر جهانی وجود دارد و آن هم استفاه از آرایه سوپرگلوبال GLOBALS می باشد :

نکته : متغیرهای جهانی ، برنامه نویسی حرفه ای یا غیر حرفه ای نمی شناسد ، اکثرا باعث مشکلات زیادی برای آن ها می شود ، پس در استفاده از آنها دقت داشته باشید.

۳) متغیرهای استاتیک :

این نوع متغیرها ، که از نام آن ها مشص است ، همیشه دارای مقدار یکسانی هستند ، و اگر هم از تابع خارج شوند ، مقدار خود را از دست نمی دهند. برای این که یک متغیر را به صورت استاتیک تعریف کنید از  کلمه کلیدی static استفاده می نمائیم:

از خروجی کد فوق ، چه انتظاری دارید ، اگر متغیر ما به صورت static تعریف نشده بود ، خروجی ما برابر با مقدار پائین می شد :

۱

۱

۱

اما به دلیل اینکه متغیر را به صورت static تعریف نموده ایم ، خروجی می شود:

۱

۲

۳