La pr�c�dence des op�rateurs
La priorit� des op�rateurs sp�cifie l'ordre dans lequel les valeurs doivent �tre analys�es. Par exemple, dans l'expression 1 + 5 * 3, le r�sultat est 16 et non 18, car la multiplication ("*") a une priorit� sup�rieure par rapport � l'addition ("+"). Des parenth�ses peuvent �tre utilis�es pour forcer la priorit�, si n�cessaire. Par exemple : (1 + 5) * 3 donnera 18. Si la priorit� d'op�rateur est �gale, l'associativit� de gauche � droite est utilis�e.
Le tableau suivant dresse une liste de la priorit� des diff�rents op�rateurs dans un ordre d�croissant de priorit�. Les op�rateurs sur une m�me ligne ont une priorit� �quivalente et, dans ce cas, leur association d�cide de l'ordre de leur �valuation.
Associativit� | Op�rateurs | Information additionnelle |
---|---|---|
non-associative | clone new | clone et new |
gauche | [ | array() |
non-associatif | ++ -- | incr�mentation/d�cr�mentation |
non-associatif | ~ - (int) (float) (string) (array) (object) (bool) @ | types |
non-associatif | instanceof | types |
droite | ! | logique |
gauche | * / % | arithm�tique |
gauche | + - . | arithm�tique et cha�ne de caract�res |
gauche | << >> | bitwise |
non-associatif | < <= > >= <> | comparaison |
non-associatif | == != === !== | comparaison |
gauche | & | bitwise et r�f�rences |
gauche | ^ | bitwise |
gauche | | | bitwise |
gauche | && | logique |
gauche | || | logique |
gauche | ? : | ternaire |
droite | = += -= *= /= .= %= &= |= ^= <<= >>= | assignation |
gauche | and | logique |
gauche | xor | logique |
gauche | or | logique |
gauche | , | plusieurs utilisations |
L'associativit� de gauche signifie que l'expression est �valu�e de gauche � droite, l'associativit� de droite, l'inverse.
Exemple #1 Associativit�
<?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
?>
Utilisez les parenth�ses pour augmenter la lisibilit� du code.
Note: Bien que = soit prioritaire sur la plupart des op�rateurs, PHP va tout de m�me ex�cuter des expressions comme : if (!$a = foo()). Dans cette situation, le r�sultat de foo() sera plac� dans la variable $a.