اپراتورهای 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!DOCTYPE html>
<html>
<body>
<?php
$x = 100;
$y = 50;
if ($x == 100 and $y == 50) {
echo "Hello world!";
}
?>
</body>
</html>
|
مشاهده ی خروجی
مثال دوم – or:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!DOCTYPE html>
<html>
<body>
<?php
$x = 100;
$y = 50;
if ($x == 100 or $y == 80) {
echo "Hello world!";
}
?>
</body>
</html>
|
مشاهده ی خروجی
مثال سوم – not:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!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 |
مثال اول – تلفیق:
1
2
3
4
5
6
7
8
9
10
11
12
|
<!DOCTYPE html>
<html>
<body>
<?php
$txt1 = "Hello";
$txt2 = " world!";
echo $txt1 . $txt2;
?>
</body>
</html>
|
مشاهده ی خروجی
مثال دوم – انتساب تلفیق:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!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 را برمیگرداند. |
مثال اول – ادغام:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!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>
|
مشاهده ی خروجی
مثال دوم – عدم برابری عینی:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!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):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!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>
|
مشاهده ی خروجی
منبع: سایت روکسو