Les opérateurs prennent des valeurs (les opérandes) et réalisent des opérations avec elles.
Beaucoup d'opérateurs attendent des types de données particuliers. Par exemple les opérateurs arithmétiques attendent des nombres. Si les opérandes ne sont pas des types attendus, PHP prend en charge automatiquement les conversions de types (type juggling).

Les opérateurs arithmétiques

Les opérateurs arithmétiques attendent normalement des nombres (entiers ou à virgule flottante). Les régles de conversion suivantes sont appliquées :

Premier opérande Second opérande Conversion Résultat
Entier Entier Aucune Entier (sauf pour les divisions et le modulo, où le résultat peut être un nombre à virgule flottante
Virgule Virgule Aucune Nombre à virgule flottante
Entier Virgule L'entier est converti en un nombre à virgule flottante. Nombre à virgule flottante.
Entier Chaîne La chaîne est convertie en un nombre. Si ce nombre est à virgule flottante, l'entier est converti en nombre à virgule flottante. Entier ou nombre à virgule flottante.
Virgule Chaîne La chaîne est convertie en un nombre à virgule flottante. Nombre à virgule flottante.
Chaîne Chaîne Les chaînes sont converties en nombre, puis éventuellement en nombres à virgule flottante. Entier ou nombre à virgule flottante.

Conversion des chaînes en nombre :

Exemples :

Exemple : opérateurs arithmétiques

Concaténation de chaînes

La concaténation de chaînes se fait avec l'opérateur . (point). Si nécessaire, les opérandes sont convertis automatiquement en chaînes.

Les chaînes peuvent être entourées de guillemets simples ou doubles. PHP traîtera différemment les chaînes suivant le type des guillemets :

Je vous conseille d'utiliser des guillemets simples si vous n'avez pas de variables dans vos chaînes. De cette façon, PHP n'examinera pas la chaîne pour savoir si elle contient des variables à valoriser. Vous aurez beaucoup plus d'informations sur le sujet dans le chapitre consacré aux chaînes de caractères.

Exemple : concaténation de chaînes

Incrément et décrément

Les opérateurs d'autoincrément et d'autodécrément ne sont applicables qu'à des variables numériques ou alphanumériques.

Opérateur Syntaxe   Résultat sur la variable Valeur retournée
 ++   $x ++  post incrément  $x = $x + 1   $x 
   ++ $x  pré incrément  $x = $x + 1   $x + 1 
 --   $x --  post décrément  $x = $x - 1   $x 
   -- $x  pré décrément  $x = $x - 1   $x - 1 
Exemple : incrément et décrément variables numériques
Exemple : incrément et décrément variables alphanumériques

Opérateurs d'assignement

Ces opérateurs donnent une valeur, ou modifient la valeur d'une variable. L'assignement peut être simple ou avec opération.

Exemple : opérateurs d'assignement

Opérateurs de bits

Ces opérateurs travaillent sur la représentation binaire des opérandes.

Opérateurs de comparaison

Ces opérateurs comparent des opérandes de n'importe quel type et renvoient la valeur true ou la valeur false.

Premier opérateur

Second opérateur

Type de comparaison

Numérique

Numérique

Numérique

Chaîne entiérement numérique

Chaîne entiérement numérique

Numérique

Chaîne entiérement numérique

Numérique

Numérique

Chaîne non entiérement numérique

Numérique

Numérique

Chaîne non entiérement numérique

Chaîne entiérement numérique

Lexicale

Chaîne non entiérement numérique

Chaîne non entiérement numérique

Lexicale

Conclusion : si vous comparez un nombre avec une chaîne ou si la comparaison implique deux chaînes numériques, alors chaque chaîne sera convertie en un nombre et la comparaison sera effectuée numériquement.

Exemple : opérateur de comparaison - égalité et identité

Comme vous pouvez le remarquer certaines égalités peuvent sembler étranges quand on est habitué à travailler avec des langages fortement typé.
On notera par exemple que la chaîne 'true' est égale au booléen true, mais que la chaîne 'false' n'est pas égale au booléen false. Si on peut admettre que la chaîne '3' soit égale au nombre 3, il est plus difficile de se figurer que la chaîne '4 rue des alouettes" est égale au nombre 4.
Soyez donc attentif quand vous faites des tests aux transtypages automatiques qui sont faits par PHP pour comparer des valeurs.
Si vous voulez faire des tests "forts", utilisez les opérateurs d'indentité et pas simplement les opérateurs d'égalité.

Opérateurs logiques

Exemple : opérateurs logiques

Opérateurs de type

Bien que PHP soit un langage sans définition de type des variables, des opérateurs permettent de forcer le type d'une variable.

Toutes les conversions ne sont pas utiles. Par exemple, transformer un tableau en numérique donne comme résultat 1, le transformer en chaîne donne "array".

Transformer un objet en tableau donne un tableau associatif : nom de propriété associé à la valeur de la propriété.

Transformer un tableau en objet donnera un objet dont les propriétés seront les valeurs du tableau.

Exemple : opérateurs de type

Autres opérateurs

Exemple : opérateur d'erreur
Exemple : opérateur conditionnel