پی ایچ پی متغیر

عاملی مخزنی برای ذخیره اطلاعات است:

مثال

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

مثال اجرایی

مانند جبر

x=5
y=6
z=x+y

در جبر از حروف (مثلاً x) برای ذخیره مقدار (مثلاً 5) استفاده می‌کنیم.

از عبارت بالا z=x+y، ما می‌توانیم مقدار z را 11 محاسبه کنیم.

در PHP، این سه حرف به عنوانعاملی.

نکته:عاملی را به عنوان یک مخزن برای ذخیره داده‌ها در نظر بگیرید.

پی ایچ پی متغیر

مانند جبر، عاملی در PHP می‌تواند برای ذخیره مقدار (x=5) و عبارت‌ها (z=x+y) استفاده شود.

نام عاملی می‌تواند خیلی کوتاه باشد (مثلاً x و y)، یا می‌تواند نام‌های توصیفی‌تری داشته باشد (مثلاً carname، total_volume).

قوانین عاملی در PHP:

  • عاملی نامی با علامت دلار ($) شروع می‌شود، پس از آن نام عاملی آمده است
  • عاملی نامی باید با حرف یا خط تیره شروع شود
  • نام متغیرها نمی‌توانند با اعداد شروع شوند
  • نام متغیرها فقط می‌توانند شامل حروف الفبای انگلیسی، اعداد و خط تیره باشند (A-z، 0-9 و _)
  • نام متغیرها حساس به حروف بزرگ و کوچک هستند ($y و $Y دو متغیر متفاوت هستند)

نکته:نام متغیرها در PHP حساس به حروف بزرگ و کوچک هستند!

ایجاد متغیر در PHP

PHP دستوری برای ایجاد متغیر ندارد.

متغیرها در اولین بار که به آن‌ها ارزشی داده می‌شود ایجاد می‌شوند:

مثال

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

مثال اجرایی

بعد از اجرای این دستورات، متغیر txt ارزش Hello world! را حفظ خواهد کرد، متغیر x ارزش 5 را حفظ خواهد کرد و متغیر y ارزش 10.5 را حفظ خواهد کرد.

نکته:اگر قصد دارید که ارزش متغیر را به صورت متن چاپ کنید، آن را در قید‌ها بگذارید.

PHP یک زبان نوع گسترده است

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

PHP به صورت خودکار متغیرها را بر اساس ارزششان به نوع صحیح تبدیل می‌کند.

در زبان‌هایی مانند C و C++ و Java، برنامه‌نویسان باید قبل از استفاده از متغیر نام و نوع آن را اعلام کنند.

محدوده متغیر در PHP

در PHP می‌توان در هر جایی از اسکریپت متغیرها را تعریف کرد.

محدوده متغیر به بخشی از اسکریپت اشاره دارد که می‌توان به متغیر دسترسی پیدا کرد.

PHP سه نوع مختلف محدوده متغیر دارد:

  • local (محلی)
  • global (جهانی)
  • static (قابل استقرار)

محدوده Local و Global

توابعخارجمتغیرهایی که با Global محدوده دارند، فقط می‌توانند در خارج از توابع دسترسی پیدا کنند.

توابعداخلمتغیرهایی که باLOCAL محدوده دارند، فقط می‌توانند در داخل تابع دسترسی پیدا کنند.

مثال زیر تستی برای متغیرهایی با محدوده محلی و جهانی است:

مثال

<?php
$x=5; // محدوده جهانی
فونکشن myTest() {
  $y=10; // محدوده محلی
  echo "<p>متغیرهایی که در داخل تابع تست می‌شوند:</p>";
  echo "متغیر x است: $x";
  echo "<br>";
  echo "متغیر y است: $y";
} 
myTest();
echo "<p>متغیرهایی که خارج از تابع تست می‌شوند:</p>";
echo "متغیر x است: $x";
echo "<br>";
echo "متغیر y است: $y";
?>

مثال اجرایی

در مثال بالا، دو متغیر $x و $y و یک تابع myTest() وجود دارد. $x متغیر جهانی است، زیرا در خارج از تابع تعریف شده است، و $y متغیر محلی است، زیرا در داخل تابع تعریف شده است.

اگر دو ارزش متغیرها را در داخل تابع myTest() چاپ کنیم، ارزش $y در محلی که در آن تعریف شده است چاپ خواهد شد، اما نمی‌توانیم ارزش $x را چاپ کنیم، زیرا در خارج از تابع ایجاد شده است.

بعد از آن، اگر دو ارزش متغیرها را بیرون از تابع myTest() چاپ کنیم، ارزش $x چاپ خواهد شد، اما ارزش $y چاپ نخواهد شد، زیرا متغیر محلی است و در داخل myTest() ایجاد شده است.

نکته:می‌توانید در فونکشن‌های مختلف متغیرهای محلی با نام‌های مشابه ایجاد کنید، زیرا متغیرهای محلی فقط توسط funct‌هایی که در آن‌ها ایجاد شده‌اند، تشخیص داده می‌شوند.

کلمه کلیدی PHP گلوبال

کلمه کلیدی global برای دسترسی به متغیرهای جهانی در داخل funct استفاده می‌شود.

برای انجام این کار، در ابتدای متغیر (در داخل funct) از کلمه کلیدی global استفاده کنید:

مثال

<?php
$x=5;
$y=10;
فونکشن myTest() {
  گلوبال $x,$y;
  $y=$x+$y;
}
myTest();
echo $y; // خروج 15
?>

مثال اجرایی

PHP همه متغیرهای جهانی را در آرایه‌ای به نام $GLOBALS[index] ذخیره می‌کند. این آرایه می‌تواند در داخل funct نیز دسترسی داشته باشد و می‌تواند برای به‌روزرسانی مستقیم متغیرهای جهانی استفاده شود.

مثال بالا می‌تواند به این صورت بازنویسی شود:

مثال

<?php
$x=5;
$y=10;
فونکشن myTest() {
  $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} 
myTest();
echo $y; // خروج 15
?>

مثال اجرایی

کلمه کلیدی PHP استاتیک

معمولاً، پس از اتمام/اجرای funct، تمام متغیرها حذف می‌شوند. اما گاهی اوقات من نیاز به حذف یک متغیر محلی ندارم. برای انجام این کار نیاز به کار بیشتر است.

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

مثال

<?php
فونکشن myTest() {
  استاتیک $x=0;
  echo $x;
  $x++;
}
myTest();
myTest();
myTest();
?>

مثال اجرایی

در اینجا، هر بار که funct فراخوانی می‌شود، اطلاعات ذخیره شده در این متغیر اطلاعات آخرین فراخوانی funct است.

نکته:این متغیر همچنان متغیر محلی funkc است.