متغیرها در PHP برای ذخیرهسازی دادههایی استفاده میشوند که میتوان به آنها در سراسر برنامه دسترسی داشت و آنها را تغییر داد. یک متغیر میتواند طیف گستردهای از مقادیر را ذخیره کند، مانند اعداد، متن، آرایهها و حتی اشیاء. یکی از ویژگیهای منحصربهفرد PHP این است که یک زبان با نوعدهی پویا (loosely typed) است، به این معنا که هنگام ایجاد یک متغیر، نیازی به تعیین نوع داده برای آن ندارید. PHP نوع متغیر را بر اساس مقداری که به آن اختصاص داده شده، مشخص میکند.
این آزادی استفاده از PHP را، بهویژه برای مبتدیان، آسانتر میکند، زیرا به شما اجازه میدهد انواع مختلفی از دادهها را بدون نیاز به تعریف نوع آنها، ذخیره و مدیریت کنید.
چگونه یک متغیر در PHP تعریف کنیم؟
برای تعریف یک متغیر در PHP، کافی است یک مقدار را با استفاده از علامت $
به متغیر اختصاص دهید و سپس نام متغیر را بنویسید. متغیرهای PHP به بزرگی و کوچکی حروف حساس هستند و باید با یک حرف یا خط زیر (_
) شروع شوند، و میتوانند شامل هر تعداد حروف، اعداد یا خطوط زیر باشند.
نحو (Syntax):
$variable_name = value;
مثال
در اینجا یک مثال آورده شده است که نشان میدهد چگونه میتوان متغیرها را در PHP تعریف کرد:
// A string value $name = "John"; // A number (integer) $age = 25; // A decimal number (float) $price = 12.50;
قوانین متغیرها در PHP
در اینجا فهرستی از قوانین تعریف متغیر در PHP آورده شده است:
- یک متغیر باید با نماد $ شروع شود و سپس نام متغیر قرار گیرد.
- نام متغیر باید با یک حرف یا زیرخط (underscore یعنی _) آغاز شود.
- نام متغیر نمیتواند با عدد شروع شود.
- نام متغیر میتواند شامل حروف، ارقام یا زیرخط (_) باشد.
- PHP به بزرگی و کوچکی حروف حساس است، بنابراین $Name و $name دو متغیر متفاوت محسوب میشوند.
مثال به مثال زیر توجه کنید که نشان میدهد متغیرهای $Name و $name با هم متفاوت هستند و خروجی این کد چگونه است:
$Name = "Amit"; $name = "Samay"; echo $Name; echo $name;
خروجی
نتیجه کد بالا به صورت زیر خواهد بود:
Amit
Samay
انواع متغیرها در PHP
در PHP، انواع اصلی متغیرها عبارتاند از: رشتهای (String)، عدد صحیح (Integer)، عدد اعشاری (Float یا Double)، بولی (Boolean)، آرایه (Array)، شیء (Object)، تهی (NULL) و منبع (Resource). در ادامه مثالهایی از هر نوع متغیر آورده شده است:
- رشته (String): دنبالهای از کاراکترها.
- عدد صحیح (Integer): یک عدد کامل (بدون اعشار).
- عدد اعشاری (Float یا Double): عددی با اعشار.
- بولی (Boolean): نشاندهنده مقادیر true یا false.
- آرایه (Array): مجموعهای از چند مقدار که در یک متغیر ذخیره میشود.
- NULL: نشاندهنده متغیری است که هیچ مقداری ندارد.
تبدیل خودکار نوع متغیرها
PHP در تبدیل خودکار نوع متغیرها، هنگام نیاز، عملکرد خوبی دارد. در کد زیر، PHP متغیر رشتهای "y"
را به نوع int
تبدیل میکند تا عملیات جمع با متغیر عدد صحیح دیگر انجام شده و نتیجه 30 چاپ شود.
به مثال زیر توجه کنید:
<?php $x = 10; $y = "20"; echo "x + y is: ", $x+$y; ?>
خروجی
خروجی کد بالا به صورت زیر خواهد بود:
x + y is: 30
مقداردهی به متغیرها بهصورت مقداری
در PHP، متغیرها همیشه بهصورت مقداری (by value) مقداردهی میشوند. اگر یک عبارت به یک متغیر اختصاص داده شود، مقدار آن عبارت به متغیر کپی میشود. اگر پس از این مقداردهی، مقدار هر یک از متغیرهای موجود در آن عبارت تغییر کند، تأثیری بر مقدار اختصاص داده شده ندارد.
<?php $x = 10; $y = 20; $z = $x+$y; echo "(before) z = ". $z . "\n"; $y=5; echo "(after) z = ". $z . ""; ?>
خروجی
خروجی کد به صورت زیر خواهد بود:
(before) z = 30
(after) z = 30
مقداردهی به متغیرهای PHP بهصورت ارجاعی
شما همچنین میتوانید بهصورت ارجاعی (by reference) به متغیرهای PHP مقدار اختصاص دهید. در این حالت، متغیر جدید در واقع به متغیر اصلی ارجاع میدهد یا به عبارتی همنام (alias) متغیر اصلی میشود و به آن اشاره میکند. بنابراین، تغییر در متغیر جدید باعث تغییر در متغیر اصلی میشود و بالعکس.
برای مقداردهی بهصورت ارجاعی، کافی است قبل از متغیر مقصد (متغیر اصلی)، علامت & قرار دهید.
به مثال زیر توجه کنید:
<?php $x = 10; $y = &$x; $z = $x+$y; echo "x=". $x . " y=" . $y . " z = ". $z . "\n"; $y=20; $z = $x+$y; echo "x=". $x . " y=" . $y . " z = ". $z . ""; ?>
خروجی
خروجی مثال بالا به صورت زیر خواهد بود:
x = 10 y = 10 z = 20
x = 20 y = 20 z = 40
دامنه (Scope) متغیر
دامنه (Scope) به معنای محدودهای است که یک متغیر در آن قابل دسترسی و استفاده در برنامه میباشد. متغیرهای PHP میتوانند یکی از چهار نوع دامنه زیر را داشته باشند:
- متغیرهای محلی (Local Variables)
- متغیرهای سراسری (Global Variables)
- متغیرهای ایستا (Static Variables)
- پارامترهای تابع (Function Parameters)