اپراتورهای PHP 7 (بخش دوم)

درسنامه درس 7 از سری آموزش PHP 7
اپراتور های PHP 7 (قسمت دوم)

اپراتورهای PHP 7

در قسمت قبل گفتیم که اپراتورها (به انگلیسی: operator - تلفظ می شود: آپِرِیتِر) برای انجام عملیات های مختلف روی داده ها و متغیرها مورد استفاده قرار می گیرند. همچنین گفتیم که زبان PHP اپراتور هایش را در چند گروه دسته بندی کرده است:

  • اپراتورهای حسابی (برای عملیات های ریاضی)
  • اپراتورهای انتساب
  • اپراتورهای مقایسه ای
  • اپراتورهای افزایشی یا کاهشی
  • اپراتورهای منطقی
  • اپراتورهای رشته
  • اپراتورهای آرایه
  • اپراتورهای انتساب شرط

در قسمت قبلی با دسته های حسابی، انتساب و مقایسه ای آشنا شدیم و در این قسمت می خواهیم با بقیه ی آن ها آشنا شویم و به ادامه بحث آموزش اپراتورهای php بپردازیم. بنابراین بهتر است بدون مقدمه شروع کنیم.

اپراتورهای افزایشی/کاهشی

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

اپراتور نام اپراتور توضیحات
++$x پیش-افزایشی مقدار x را یک واحد افزایش داده سپس آن را برمیگرداند.
$x++ پس-افزایشی ابتدا x را برمیگرداند، سپس مقدار آن را یک واحد اضافه می کند.
--$x پیش-کاهشی مقدار x را یک واحد کاهش داده سپس آن را برمیگرداند.
$x-- پس-کاهشی ابتدا x را برمیگرداند، سپس مقدار آن را یک واحد کاهش می دهد.

برای پی بردن به تفاوت عملی این اپراتورها به دو مثال زیر توجه کنید:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 10;  
echo ++$x;
?>  

</body>
</html>

مشاهده ی خروجی

در این مثال خروجی x برابر با 11 است. x در ابتدا 10 بوده است، یک واحد به آن اضافه شده و سپس به ما برگردانده می شود. حالا به مثال زیر نگاه کنید:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 10;  
echo $x++;
?>  

</body>
</html>

مشاهده ی خروجی

همانطور که مشاهده می کنید در این مثال خروجی x برابر با 10 است! چرا؟ به این دلیل که ابتدا x به ما برگردانده می شود و خروجی آن (10) نمایش داده می شود و سپس یک واحد به آن اضافه می شود. در این حالت x برای بقیه ی اسکریپت ما 11 خواهد بود بنابراین اگر چند خط پایین تر و بعد از چند عملیات دوباره از x خروجی بگیرید مقدار 11 خواهد بود. در واقع مقدار x در حال حاضر 11 است اما خروجی آن قبل از اینکه 11 بشود گرفته شده و به ما نمایش داده شده است.

اپراتورهای منطقی

اپراتور نام اپراتور مثال معنی مثال
and And $x and $y اگر x و y (یعنی یکی یا هر دو) برابر True باشند، خروجی نیز True می شود.
or Or $x or $y اگر x یا y (یعنی یکی از آنها) برابر True باشند، خروجی نیز True می شود.
xor Xor $x xor $y اگر x یا y برابر True باشند اما هر دو true نباشند (یعنی فقط یکی)، خروجی نیز True می شود.
&& And $x && $y معادل and است.
|| Or $x || $y معادل or است.
! Not !$x اگر x برابر true نباشد خروجی true خواهد بود.

مثال اول - and:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 100;  
$y = 50;

if ($x == 100 and $y == 50) {
    echo "Hello world!";
}
?>  

</body>
</html>

مشاهده ی خروجی

مثال دوم - or:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 100;  
$y = 50;

if ($x == 100 or $y == 80) {
    echo "Hello world!";
}
?>  

</body>
</html>

مشاهده ی خروجی

مثال سوم - not:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 100;  

if ($x !== 90) {
    echo "Hello world!";
}
?>  

</body>
</html>

مشاهده ی خروجی

اپراتورهای رشته ها

زبان PHP دو اپراتور دارد که فقط برای کار با رشته ها طراحی شده اند. به جدول زیر نگاه کنید:

اپراتور نام اپراتور مثال معنی مثال
. (علامت نقطه) Concatenation (تلفیق) $txt1 . $txt2 تلفیق رشته های txt1 و txt2
.= Concatenation assignment

(انتساب تلفیق)

$txt1 .= $txt2 چسباندن txt2 به txt1

مثال اول - تلفیق:

<!DOCTYPE html>
<html>
<body>

<?php
$txt1 = "Hello";
$txt2 = " world!";
echo $txt1 . $txt2;
?>  

</body>
</html>

مشاهده ی خروجی

مثال دوم - انتساب تلفیق:

<!DOCTYPE html>
<html>
<body>

<?php
$txt1 = "Hello";
$txt2 = " world!";
$txt1 .= $txt2;
echo $txt1;
?>  

</body>
</html>

مشاهده ی خروجی

همانطور که می بینید مثال اول دو رشته را ترکیب می کند اما مثال دوم یکی از آن ها را به دیگری می چسباند.

اپراتورهای آرایه ها

اپراتورهای زیر برای مقایسه ی آرایه ها به کار می روند:

اپراتور نام مثال معنی مثال
+ Union $x + $y ادغام x و y
== Equality (برابری) $x == $y اگر x و y جفت های key/value یکسان داشته باشند مقدار true را برمیگرداند.
=== Identity (برابری عینی) $x === $y اگر x و y جفت های key/value یکسان داشته باشند و این جفت ها ترتیب یکسانی داشته باشند و همچنین از یک نوع باشند مقدار true را برمیگرداند.
!= Inequality $x != $y اگر x و y برابر نباشند مقدار true را برمیگرداند.
<> Inequality $x <> $y دقیقا دستور قبلی است.
!== Non-identity $x !== $y اگر x و y برابری عینی نداشته نباشند مقدار true را برمیگرداند.

مثال اول - ادغام:

<!DOCTYPE html>
<html>
<body>

<?php
$x = array("a" => "red", "b" => "green");  
$y = array("c" => "blue", "d" => "yellow");  

print_r($x + $y); // union of $x and $y
?>  

</body>
</html>

مشاهده ی خروجی

مثال دوم - عدم برابری عینی:

<!DOCTYPE html>
<html>
<body>

<?php
$x = array("a" => "red", "b" => "green");  
$y = array("c" => "blue", "d" => "yellow");  

var_dump($x !== $y);
?>  

</body>
</html>

مشاهده ی خروجی

اپراتورهای انتساب شرط

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

اپراتور نام اپراتور مثال معنی مثال
?: Ternary $x = expr1 ? expr2 : expr3 مقدار x را برمیگرداند. اگر expr1 برابر با true باشد آنگاه مقدار X برابر با expr2 است اما اگر false باشد، مقدار x برابر expr3 خواهد بود.
?? Null coalescing $x = expr1 ?? expr2 مقدار x را برمیگرداند. اگر expr1 وجود داشته باشد آنگاه مقدار X برابر با expr1 است (نه NULL) اما اگر expr1 وجود نداشته باشد یا NULL باشد، مقدار x برابر expr2 خواهد بود.

مثال اول - اپراتور ترنری (Ternary):

<!DOCTYPE html>
<html>
<body>

<?php
   // if empty($user) = TRUE, set $status = "anonymous"
   echo $status = (empty($user)) ? "anonymous" : "logged in";
   echo("<br>");

   $user = "John Doe";
   // if empty($user) = FALSE, set $status = "logged in"
   echo $status = (empty($user)) ? "anonymous" : "logged in";
?>  

</body>
</html>

مشاهده ی خروجی

مثال دوم - اپراتور Null coalescing:

<!DOCTYPE html>
<html>
<body>

<?php
   // variable $user is the value of $_GET['user']
   // and 'anonymous' if it does not exist
   echo $user = $_GET["user"] ?? "anonymous";
   echo("<br>");
  
   // variable $color is "red" if $color does not exist or is null
   echo $color = $color ?? "red";
?>  

</body>
</html>

مشاهده ی خروجی

به شما تبریک می گویم، با پایان آموزش اپراتورهای PHP رسیدید و با تمام اپراتورهای این زبان آشنا شدید! یادتان نرود که راه حل آموزش اپراتورهای php وتسلط واقعی بر آن ها، حل مثال و کدنویسی است.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش PHP 7 توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (1 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

Mohsen
23 تیر 1398
من این دو تا اپراتور اخری رو نمیفهمم

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
25 تیر 1398
سلام دوست عزیز اپراتور Ternary رو یه حالت خلاصه ای از همون if میشه در نظر گرفت. در مثال بالا گفتیم: echo $status = (empty($user)) ? "anonymous" : "logged in"; گفتیم اگر متغیر user$ خالی بود (تابع empty) یعنی کاربر وارد حسابش نشده پس میگیم anonymous رو نشون بده در غیر این صورت logged in رو نمایش بده. توی این اپراتور اول شرط رو میگیم بعد میگیم اگه درست بود حالت اول و اگه غلط یا همون false بود حالت دوم رو در نظر بگیره. این حالت ها رو با علامت دو نقطه (:) از هم جدا کردیم. --------------------------------- برای اپراتور Null coalescing هم همینطوریه فقط نحوه ی نگارشش و جزئیاتش فرق داره. دو تا مثال بالا رو توی صفحه ی خروجیشون باز کنید و مقایسه کنین. حتما متوجه میشید. اگه مثال های بیشتری برای این اپراتور ها میخواین از دو تا لینک زیر استفاده کنید: https://riptutorial.com/php/example/7164/null-coalescing-operator----- https://riptutorial.com/php/example/7608/ternary-operator-----

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.