��������ȼ�

��������ȼ�ָ�����������ʽ�󶨵��ж�"����"�����磬���ʽ 1 + 5 * 3 �Ľ���� 16 ������ 18 ����Ϊ�˺ţ�"*"�������ȼ��ȼӺţ�"+"���ߡ���Ҫʱ������������ǿ�Ƹı����ȼ������磺(1 + 5) * 3 ��ֵΪ 18��

�����������ȼ���ͬ����������Ľ�Ϸ�������˸�������㡣���磬"-"�������ģ���ô 1 - 2 - 3 �͵�ͬ�� (1 - 2) - 3 ���ҽ���� -4. ����һ���棬"="�������ģ����� $a = $b = $c ��ͬ�� $a = ($b = $c)��

û�н�ϵ���ͬ���ȼ����������������һ��ʹ�ã����� 1 < 2 > 1 ��PHP�Dz��Ϸ��ġ�������һ������ʽ 1 <= 1 == 1 �ǺϷ���, ��Ϊ == �����ȼ����� <=��

���ŵ�ʹ�ã������ڲ��DZ�Ҫ�ij����£�ͨ�����ŵ��������ȷ��������˳�򣬶��ǿ���������ȼ��ͽ������������ͨ���ܹ����Ӵ���Ŀɶ��ԡ�

�±������ȼ��Ӹߵ����г����������ͬһ���е������������ͬ���ȼ�����ʱ���ǵĽ�Ϸ��������ֵ˳��

��������ȼ�
��Ϸ��� ����� ������Ϣ
�� clone new clone �� new
�� [ array()
�� ** ���������
�� ++ -- ~ (int) (float) (string) (array) (object) (bool) @ �������������ݼ�
�� instanceof ����
�� ! �߼������
�� * / % ���������
�� + - . ������������ַ��������
�� << >> ����
�� < <= > >= �Ƚ������
�� == != === !== <> <=> �Ƚ������
�� & ����������
�� ^ ����
�� | ����
�� && �߼������
�� || �߼������
�� ?? �Ƚ������
�� ? : ternary
right = += -= *= **= /= .= %= &= |= ^= <<= >>= ��ֵ�����
�� and �߼������
�� xor �߼������
�� or �߼������

Example #1 ��Ϸ���

<?php
$a 
5// (3 * 3) % 5 = 4
// ternary operator associativity differs from C/C++
$a true true 2// (true ? 0 : true) ? 1 : 2 = 2

$a 1;
$b 2;
$a $b += 3// $a = ($b += 3) -> $a = 5, $b = 5
?>

Operator precedence and associativity only determine how expressions are grouped, they do not specify an order of evaluation. PHP does not (in the general case) specify in which order an expression is evaluated and code that assumes a specific order of evaluation should be avoided, because the behavior can change between versions of PHP or depending on the surrounding code.

Example #2 Undefined order of evaluation

<?php
$a 
1;
echo 
$a $a++; // may print either 2 or 3

$i 1;
$array[$i] = $i++; // may set either index 1 or 2
?>

Note:

���� = �����������������������ȼ��ͣ�PHP �Ծ������������µı��ʽ��if (!$a = foo())���ڴ����� foo() �ķ���ֵ�������� $a��