Відмінності між версіями «Пріоритети операторів PHP»
Bobchik (обговорення • внесок) |
Bobchik (обговорення • внесок) |
||
Рядок 33: | Рядок 33: | ||
<td><div align="center">9</div></td> | <td><div align="center">9</div></td> | ||
<td><div align="center"><< >> </div></td> | <td><div align="center"><< >> </div></td> | ||
− | <td><div align="center">зліва | + | <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">< <= > >= </div></td> | <td><div align="center">< <= > >= </div></td> | ||
− | <td><div align="center">зліва | + | <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">зліва | + | <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">&</div></td> | <td><div align="center">&</div></td> | ||
− | <td><div align="center">зліва | + | <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">зліва | + | <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">зліва | + | <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">&&</div></td> | <td><div align="center">&&</div></td> | ||
− | <td><div align="center">зліва | + | <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">зліва | + | <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">= += -= *= /= %= >>= <<== &= ^= |= </div></td> | <td><div align="center">= += -= *= /= %= >>= <<== &= ^= |= </div></td> | ||
− | <td><div align="center">зліва | + | <td><div align="center">зліва направо</div></td> |
</tr> | </tr> | ||
</table> | </table> |
Версія за 14:06, 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 = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2
$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>
У будь-якому випадку, якщо ви сумніваєтеся, чи боїтеся помилитися, використовуйте круглі дужки. Це також дозволить зробити ваш код більш читабельним.