Відмінності між версіями «Пріоритети операторів PHP»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Створена сторінка: Пріоритет операторів визначає, наскільки "тісно" пов'язані між собою два вирази. '''Наприк…)
 
Рядок 12: Рядок 12:
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">13</div></td>
 
     <td><div align="center">13</div></td>
     <td><div align="center">(постфикс)++ (постфикс)-- </div></td>
+
     <td><div align="center">(постфікс)++ (постфікс)-- </div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва направо</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">12</div></td>
 
     <td><div align="center">12</div></td>
     <td><div align="center">++(префикс) --(префикс) </div></td>
+
     <td><div align="center">++(префікс) --(префікс) </div></td>
     <td><div align="center">справа налево </div></td>
+
     <td><div align="center">зліва направо </div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">11</div></td>
 
     <td><div align="center">11</div></td>
 
     <td><div align="center">* / % </div></td>
 
     <td><div align="center">* / % </div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва направо</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">10</div></td>
 
     <td><div align="center">10</div></td>
 
     <td><div align="center">+ - </div></td>
 
     <td><div align="center">+ - </div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва направо</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">9</div></td>
 
     <td><div align="center">9</div></td>
 
     <td><div align="center">&lt;&lt; &gt;&gt; </div></td>
 
     <td><div align="center">&lt;&lt; &gt;&gt; </div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">8</div></td>
 
     <td><div align="center">8</div></td>
 
     <td><div align="center">&lt; &lt;= &gt; &gt;= </div></td>
 
     <td><div align="center">&lt; &lt;= &gt; &gt;= </div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">7</div></td>
 
     <td><div align="center">7</div></td>
 
     <td><div align="center">== != </div></td>
 
     <td><div align="center">== != </div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">6</div></td>
 
     <td><div align="center">6</div></td>
 
     <td><div align="center">&amp;</div></td>
 
     <td><div align="center">&amp;</div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">5</div></td>
 
     <td><div align="center">5</div></td>
 
     <td><div align="center">^</div></td>
 
     <td><div align="center">^</div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">4</div></td>
 
     <td><div align="center">4</div></td>
 
     <td><div align="center">|</div></td>
 
     <td><div align="center">|</div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">3</div></td>
 
     <td><div align="center">3</div></td>
 
     <td><div align="center">&amp;&amp;</div></td>
 
     <td><div align="center">&amp;&amp;</div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">2</div></td>
 
     <td><div align="center">2</div></td>
 
     <td><div align="center">||</div></td>
 
     <td><div align="center">||</div></td>
     <td><div align="center">слева направо</div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
   <tr bgcolor="#FFFFFF" class="mtx4">
 
     <td><div align="center">1</div></td>
 
     <td><div align="center">1</div></td>
 
     <td><div align="center">= += -= *= /= %= &gt;&gt;= &lt;&lt;== &amp;= ^= |= </div></td>
 
     <td><div align="center">= += -= *= /= %= &gt;&gt;= &lt;&lt;== &amp;= ^= |= </div></td>
     <td><div align="center">справа налево </div></td>
+
     <td><div align="center">зліва на право</div></td>
 
   </tr>
 
   </tr>
 
</table>
 
</table>

Версія за 14:04, 19 квітня 2010

Пріоритет операторів визначає, наскільки "тісно" пов'язані між собою два вирази. Наприклад, вираз 1 + 5 * 3 обчислюється як 16, а не 18, оскільки операція множення ("*") має більш високий пріоритет, ніж операція додавання ("+"). У випадку, якщо оператори мають однаковий пріоритет, вони будуть виконуватися зліва направо. Круглі дужки можуть використовуватися для примусового вказівки необхідного порядку виконання операторів. Наприклад, вираз (1 + 5) * 3 обчислюється як 18.

У наступній таблиці наведено список операторів, відсортований за спаданням їхніх пріоритетів. Оператори, розміщені в одному рядку мають однаковий пріоритет і порядок їх виконання опроделяется виходячи з їх асоціативності.

Оператори з більш високим рівнем пріоритету виконуються в першу чергу:

Приоритет
Оператор
Порядок выполнения
13
(постфікс)++ (постфікс)--
зліва направо
12
++(префікс) --(префікс)
зліва направо
11
* / %
зліва направо
10
+ -
зліва направо
9
<< >>
зліва на право
8
< <= > >=
зліва на право
7
== !=
зліва на право
6
&
зліва на право
5
^
зліва на право
4
|
зліва на право
3
&&
зліва на право
2
||
зліва на право
1
= += -= *= /= %= >>= <<== &= ^= |=
зліва на право

Приклад порядку виконання операторів (асоціативність)::

<?php 
   $a 
5// (3 * 3) % 5 = 4 
  
$a true true 2// (true ? 0 : true) ? 1 : 2 = 2 
    
  
$a 1
  
$b 2
  
$a $b += 3// $a = ($b += 3) -> $a = 5, $b = 5 
?>

У будь-якому випадку, якщо ви сумніваєтеся, чи боїтеся помилитися, використовуйте круглі дужки. Це також дозволить зробити ваш код більш читабельним.