متغیر مکانی از حافظه برای نگهداری مقادیر مختلف می باشد و این مقادیر ممکن است عدد، متن، آرایه و یا ... باشد.
نکته! در php نام متغیرها حساس به حروف کوچک و بزرگ است، مثلا num با Num متفاوت است و دو متغیر مستقل در نظر گرفته می شود.

نکاتی که در تعریف متغیرهای php باید بخاطر داشته باشید:
نام متغیر با علامت $ شروع می شود.
نام متغیر بعد از $ حتما با حرف و یا کاراکتر _ شروع می شود.
نام متغیر می تواند شامل حروف الفبا، اعداد و کاراکتر _ باشد.

نام متغیر نمیتواند شامل فضای خالی (space) باشد.
نام متغیر حساس به حروف کوچک و بزرگ می باشد.

نحوه تعریف متغیرها در زبان php به این صورت است، به عنوان مثال:

<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>


خطوط بالا باعث می شود متغیر x مقدار 5 و y مقدار 6 و z مقدار 11 را بگیرد، ودر نهایت مقدار 11 در خروجی چاپ شود.

تعریف متغیرها در php:

در زبان php نوع متغیرها با اولین مقداری که به آنها تخصیص داده می شود تعیین می شود:

$str="Hello world!";
$num=5;


متغیرهای مقداردهی شده در بالا به ترتیب انواع متنی و عددی را به خود اختصاص می دهند. توجه کنید که ما نوع داده را شخص نکردیم و نوع متغیر با توجه به مقدار ورودی مشخص می شود.

محدوده متغیرها در php:
محدوده متغیر به فضایی گفته می شود که متغیر در آن فضا معتبر است و میتوانیم از مقدار آن استفاده کنیم و یا آن را تغییر دهیم.
php دارای چهار محدوده است:
متغیرهای محلی (local)
متغیرهای سراسری (global)
متغیرهای ایستا (static)
پارامتر (parameter)


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

 <?php

$x=5; // global scope
function myTest()
{
echo $x; // local scope
}
myTest();
?> 

 در مثال بالا هیچ خروجی چاپ نمی شود، چون متغیرهای x در بیرون تابع و داخل تابع دارای مقادیر جدا هستند و در حقیقت مقدار متغیر x داخل تابع خالی است چون در داخل تابع مقدار دهی نشده است.

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

<?php
$x=5; // global scope
$y=10; // global scope
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // outputs 15
?>

متغیرهای x و y در بیرون تابع تعریف شده اند و از نوع سراسری هستند، در داخل تابع اگر بخواهیم به مقدار آنها دسترسی پیدا کنیم باید ابتدا با کلمه کلیدی global در تابع تعریف کنیم سپس از آن استفاده نماییم.
خروجی مثال فوق 15 خواهد بود چون داخل تابع مقادیر x و y با هم جمع و در متغیر y قرار داده می شود.

نکته! در php متغیرهای سراسری در آرایه ای با نام GLOBALS ذخیره می شوند که به این صورت نیز میتوانیم به مقادیر آنها دسترسی داشته باشیم:

<?php
$x=5;
$y=10;
function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y; ?>

خروجی مثال فوق نیز 15 خواهد بود.

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

<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?> 

خروجی برابر 012 خواهد بود، چون موقع فراخوانی دوباره تابع، متغیر x که بصورت static تعریف شده مقدار نهایی خودش رو همیشه نگه خواهد داشت و موقع تعریف دوباره از مقدار قبلی خود استفاده خواهد کرد. در حقیقت اولین باری که تابع فراخوانی میشه و متغیر تعریف میشه مقدار 0 رو میگیره ولی دفعه های بعد دیگه مقدار 0 نمیگیره!

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

<?php
function myTest($x)
{
echo $x;
}
myTest(5);
?> 

در مثال فوق مقدار 5 به تابع ارسال می شود و داخل تابع مقدار 5 چاپ می شود.