تقدم عملگرها

تقدم عملگرها مشخص می کند که در محاسباتی که بیش از دو عملوند دارند ابتدا کدام عملگر اثرش را اعمال کند. عملگر ها در PHP در محاسبات دارای حق تقدم هستند.به عنوان مثال :

$number = 1 + 2 * 3 / 1;

اگر ما حق تقدم عملگرها را رعایت نکنیم و عبارت بالا را از سمت چپ به راست انجام دهیم نتیجه 9 خواهد شد (3=2+1 سپس 9=3×3 و در آخر 9=1/9).اما PHP با توجه به تقدم عملگرها محاسبات را انجام می دهد.برای مثال عمل ضرب و تقسیم نسبت به جمع و تفریق تقدم دارند.بنابراین در مثال فوق ابتدا عدد 2 ضربدر 3 و سپس نتیجه آنها تقسیم بر 1 می شود که نتیجه 6 به دست می آید.در آخر عدد 6 با 1 جمع می شود و عدد 7 حاصل می شود. در جدول زیر تقدم برخی از عملگرهای PHP آمده است :

عملگر اولویت
new بیشترین
( )
[ ]
! ++ —
@
/ * %
+ – .
< <= >= >
== != === <>
|| &&
?:
AND XOR OR
, کمترین

ابتدا عملگرهای با بالاترین و سپس عملگرهای با پایین ترین حق تقدم در محاسبات تاثیر می گذارند. به این نکته توجه کنید که تقدم عملگرها ++ و — به مکان قرارگیری آنها بستگی دارد (در سمت چپ یا راست عملوند باشند). به عنوان مثال :

<?php
    $number = 3;

    $number1 = 3 + ++$number;
       
    echo $number1;
?>
7
<?php
    $number = 3;

    $number1 = 3 + $number++;
       
    echo $number1;
?>
6

در عبارت اول ابتدا به مقدار number$ یک واحد اضافه شده و 4 می شود و سپس مقدار جدید با عدد 3 جمع می شود و در نهایت عدد 7 به دست می آید.در عبارت دوم مقدار عددی 3 به مقدار number$ اضافه می شود و عدد 6 به دست می آید.سپس این مقدار در متغیر $number1 قرار می گیرد. و در نهایت مقدار $number به 4 افزایش می یابد. برای ایجاد خوانایی در تقدم عملگرها و انجام محاسباتی که در آنها از عملگرهای زیادی استفاده می شود از پرانتز استفاده می کنیم :

$number = ( 1 + 2 ) * ( 3 / 4 ) % ( 5 - ( 6 * 7 ));

در مثال بالا ابتدا هر کدام از عباراتی که داخل پرانتز هستند مورد محاسبه قرار می گیرند.به نکته ای در مورد عبارتی که در داخل پرانتز سوم قرار دارد توجه کنید.در این عبارت ابتدا مقدار داخلی ترین پرانتز مورد محاسبه قرار می گیرد یعنی مقدار 6 ضربدر 7 شده و سپس از 5 کم می شود. اگر دو یا چند عملگر با حق تقدم یکسان موجود باشد ابتدا باید هر کدام از عملگرها را که در ابتدای عبارت می آیند مورد ارزیابی قرار دهید. به عنوان مثال :

$number = 3 * 2 + 8 / 4;

هر دو عملگر * و / دارای حق تقدم یکسانی هستند. بنابر این شما باید از چپ به راست آنها را در محاسبات تاثیر دهید.یعنی ابتدا 3 را ضربدر 2 می کنید و سپس عدد 8 را بر 4 تقسیم می کنید. در نهایت نتیجه دو عبارت را جمع کرده و در متغیر number$ قرار می دهید.