علامت = یک علامت مساوی نیست بلکه یک اپراتوره.
مثال 1
$x = 5;
echo $x;
در مثال بالا با اپراتور = مقدار 5 رو به متغیر x اختصاص دادیم بعد اومدیم با دستور echo اون مقدار رو خروجی گرفتیم, این یک مثال ساده بود که همه با اون آشنایی داریم.
سعی کنید از مثالهای زیر استفاده نکنید که کد رو پیچیدهتر میکنید که حرکت درستی نیست.
اپراتور = نه تنها یه مقدار رو به متغیر اختصاص میده بلکه اون مقدار اختصاص داده شده رو هم برمیگردونه.
مثال 2
echo $x = 5; output: 5
echo $x; output: 5
اتفاقی که تو مثال بالا میوفته اینه که داخل دستور echo یه متغیر x تعریف کردیم و مقدار 5 رو بهش اختصاص دادیم, کاری که اپراتور = انجام میده مقدار 5 رو به متغیر x اختصاص میده و همون مقدار رو بر میگردونه و نتیجه نهایی به این شکله
echo 5; output: 5
مثال 3
$x = ($y = 5) + 5;
echo $x; output: 10
echo $y; output: 5
اتفاقی که تو مثال بالا میوفته داخل پرانتز یه متغیر y تعیرف میکنیم و با اپراتور = مقدار 5 رو بهش اختصاص میدیم و اپراتور = همون مقدار اختصاص داده شده رو برمیگرونه و ادامه عملیات به این حالته
$x = 5 + 5; result: 5 + 5 = 10
5 اول مقداریه که از اپراتور = برگشت داده شده, اعداد رو جمع میکنیم نتیجه رو به متغیر x اختصاص میدیم.
echo $x; output: 10
echo $y; output: 5
خروجی x = 10 و y = 5, اگه به مثال 3 توجه کنید میبینید که ما متغیر y رو هم تعیرف کردیم و مقدار 5 رو به اون اختصاص دادیم.
توجه کنید که درصد اولویت اپراتور = از اپراتور + کمتره, برای همین دستور y = 5 داخل پراتز قرار میدیم اول عملیات داخل پرانتز انجام بشه و اگه اینکار رو انجام ندیم نتیجه دیگه ای تو خروجی میبینیم
$x = $y = 5 + 5;
echo $x; output: 10
echo $y; output: 10
مثال بالا به دلیل اینکه اپراتور + درصد بالاتری داره عملیات 5 + 5 اول انجام میشه و مقدار 10 رو به متغیر y اختصاص میده و اپراتور = همون مقدار 10 رو برمیگردونه و به متغیر x اختصاص میده.
مثال 4 chaining assignment
$a = $b = $c = 5 + 5;
echo $a; output: 10
echo $b; output: 10
echo $c; output: 10
عملیات 5 + 5 انجام میشه و مقدار 10 به اپراتور c اختصاص داده میشه و اپراتور = مقدار رو برمیگردونه مقدار برگشت داده شده به اپراتور b اختصاص داده میشه و باز هم اپراتور = مقدار اختصاص داده به متغیر b رو برمگیردونه و به متغیر a اختصاص میده.