PHP Opérateurs


Dans ce chapitre, nous allons discuter de l'application de différents opérateurs en PHP.

En PHP, l'opérateur d'affectation=est utilisé pour affecter des valeurs aux variables.

En PHP, les opérateurs arithmétiques+sont utilisés pour additionner des valeurs.


Opérateurs arithmétiques PHP

Operator Name Description Exemple Résultat
x + y ajoutez Somme de x et y 2 + 2 4
x - y soustraction Différence de x et y 5 - 2 3
x * y multiply Produit de x et y 5 * 2 10
x / y divide Quotient de x et y 15 / 5 3
x % y Modulo (reste de la division) Reste de x divisé par y 5 % 2
10 % 8
10 % 2
1
2
0
-x Rendre négatif Prendre le signe opposé de x
<?php
$x = 2;
echo -$x;
?>
-2
~x Non bit à bit

Inverser x, en effectuant une opération NOT bit à bit sur ses bits binaires. Les règles sont :

~1=-2;   
~0=-1;
<?php
$x = 2;
echo ~$x;
?>
-3
a . b Concaténation Concatène deux chaînes "Hi" . "Ha" HiHa

Les exemples suivants illustrent les différents résultats obtenus en utilisant différents opérateurs arithmétiques :

Exemple

<?php $x=10; $y=6; echo ($x + $y); //Affiche 16 echo '<br>'; //Nouvelle ligne echo ($x - $y); //Affiche 4 echo '<br>'; //Nouvelle ligne echo ($x * $y); //Affiche 60 echo '<br>'; //Nouvelle ligne echo ($x / $y); //Affiche 1.6666666666667 echo '<br>'; //Nouvelle ligne echo ($x % $y); //Affiche 4 echo '<br>'; //Nouvelle ligne echo -$x; ?>

Essayez-le vous-même »

La version PHP7+ ajoute un opérateur de division entièreintdiv(), cette fonction renvoie la valeur du premier paramètre divisée par le second paramètre et l'arrondit à l'entier inférieur (floor). Exemple :

Exemple

<?php var_dump(intdiv(10, 3)); ?>

L'exemple ci-dessus affichera :

int(3)

Opérateurs d'affectation PHP

En PHP, l'opérateur d'affectation de base est=. Cela signifie que l'opérande de gauche reçoit la valeur de l'expression de droite. C'est-à-dire,$x = 5la valeur est 5.

Operator Équivalent à Description
x = y x = y L'opérande de gauche reçoit la valeur de l'expression de droite
x += y x = x + y ajoutez
x -= y x = x - y soustraction
x *= y x = x * y multiply
x /= y x = x / y divide
x %= y x = x % y Modulo (reste de la division)
a .= b a = a . b Concatène deux chaînes

Les exemples suivants montrent les différents résultats obtenus en utilisant différents opérateurs d'affectation :

Exemple

<?php $x=10; echo $x; //Affiche 10 $y=20; $y += 100; echo $y; //Affiche 120 $z=50; $z -= 25; echo $z; //Affiche 25 $i=5; $i *= 6; echo $i; //Affiche 30 $j=10; $j /= 5; echo $j; //Affiche 2 $k=15; $k %= 4; echo $k; //Affiche 3 ?>

Essayez-le vous-même »

Les exemples suivants démontrent les mêmes résultats obtenus en utilisant différents opérateurs de chaînes :

Exemple

<?php $a = "Hello"; $b = $a . " world!"; echo $b; //Affiche Hello world! $x="Hello"; $x .= " world!"; echo $x; //Affiche Hello world! ?>

Essayez-le vous-même »

Opérateurs d'incrémentation/décrémentation PHP

Operator Name Description
++ x Pré-incrémentation Ajoute 1 à x, puis retourne x
x ++ Post-incrémentation Retourne x, puis ajoute 1 à x
-- x Pré-décrémentation Soustrait 1 de x, puis renvoie x
x -- Post-décrémentation Renvoie x, puis soustrait 1 de x

Les exemples suivants illustrent les résultats obtenus avec les opérateurs d'incrémentation/décrémentation :

Exemple

<?php $x=10; echo ++$x; //Affiche 11 $y=10; echo $y++; //Affiche 10 $z=5; echo --$z; //Affiche 4 $i=5; echo $i--; //Affiche 5 ?>

Essayez-le vous-même »

Opérateurs de comparaison PHP

Les opérateurs de comparaison vous permettent de comparer deux valeurs :

Operator Name Description Exemple
x == y Equal Renvoie true si x est égal à y 5==8 renvoie false
x === y Identique Renvoie true si x est égal à y et qu'ils sont du même type 5==="5" renvoie false
x != y Différent de Renvoie true si x n'est pas égal à y 5!=8 renvoie true
x <> y Différent de Renvoie true si x n'est pas égal à y 5<>8 renvoie true
x !== y Non identique Renvoie true si x n'est pas égal à y, ou s'ils ne sont pas du même type 5!=="5" renvoie true
x > y Supérieur à Renvoie true si x est supérieur à y 5>8 renvoie false
x < y Inférieur à Renvoie true si x est inférieur à y 5<8 renvoie true
x >= y Supérieur ou égal à Renvoie true si x est supérieur ou égal à y 5>=8 renvoie false
x <= y Inférieur ou égal à Renvoie true si x est inférieur ou égal à y 5<=8 renvoie true

Les exemples suivants montrent les différents résultats obtenus en utilisant certains opérateurs de comparaison :

Exemple

<?php $x=100; $y="100"; var_dump($x == $y); echo "<br>"; var_dump($x === $y); echo "<br>"; var_dump($x != $y); echo "<br>"; var_dump($x !== $y); echo "<br>"; $a=50; $b=90; var_dump($a > $b); echo "<br>"; var_dump($a < $b); ?>

Essayez-le vous-même »

Opérateurs logiques PHP

Operator Name Description Exemple
x and y et Renvoie true si x et y sont tous les deux true x=6
y=3
(x < 10 and y > 1) renvoie true
x or y ou Renvoie true si au moins l'un de x et y est true x=6
y=3
(x==6 or y==5) renvoie true
x xor y Xor Renvoie true si exactement l'un de x et y est true x=6
y=3
(x==6 xor y==3) renvoie false
x && y et Renvoie true si x et y sont tous les deux true x=6
y=3
(x < 10 && y > 1) renvoie true
x || y ou Renvoie true si au moins l'un de x et y est true x=6
y=3
(x==5 || y==5) renvoie false
! x not Renvoie true si x n'est pas true x=6
y=3
!(x==y) renvoie true

Opérateurs de tableau PHP

Operator Name Description
x + y Union Union de x et y
x == y Égalité Renvoie true si x et y ont les mêmes paires clé/valeur
x === y Identité Renvoie true si x et y ont les mêmes paires clé/valeur, dans le même ordre et de même type
x != y Inégalité Renvoie true si x n'est pas égal à y
x <> y Inégalité Renvoie true si x n'est pas égal à y
x !== y Non-identité Renvoie true si x n'est pas égal à y

Les exemples suivants montrent les différents résultats obtenus en utilisant certains opérateurs de tableau :

Exemple

<?php $x = array("a" => "red", "b" => "vert"); $y = array("c" => "bleu", "d" => "jaune"); $z = $x + $y; //Union des tableaux $x et $y var_dump($z); var_dump($x == $y); var_dump($x === $y); var_dump($x != $y); var_dump($x <> $y); var_dump($x !== $y); ?>

Essayez-le vous-même »

Opérateur ternaire

Un autre opérateur conditionnel est l'opérateur "?:" (ou ternaire).

Format de syntaxe

(expr1) ? (expr2) : (expr3) 

La valeur est expr2 lorsque expr1 vaut TRUE, et expr3 lorsque expr1 vaut FALSE.

Depuis PHP 5.3, la partie centrale de l'opérateur ternaire peut être omise. L'expression expr1 ?: expr3 renvoie expr1 si expr1 vaut TRUE, sinon renvoie expr3.

Exemple

Dans l'exemple suivant, en vérifiant si la requête $_GET contient une valeur pour user, il renvoie $_GET['user'] si elle est présente, sinon renvoie nobody :

Exemple

<?php //Syntaxe normale $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; echo $username, PHP_EOL; //Syntaxe de la version PHP 5.3+ $username = $_GET['user'] ?: 'nobody'; echo $username, PHP_EOL; ?>

Remarque :PHP_EOLest un caractère de nouvelle ligne, compatible avec davantage de plateformes.

Dans les versions PHP 7+, il existe un opérateur de coalescence NULL supplémentaire??, des exemples sont les suivants :

Exemple

<?php //Si $_GET['user'] n'existe pas, retourner 'nobody', sinon retourner la valeur de $_GET['user'] $username = $_GET['user'] ?? 'nobody'; //Opérateur ternaire similaire $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?>

Opérateur de comparaison combiné (PHP7+)

PHP7+ prend en charge l'opérateur de comparaison combiné, aussi appelé opérateur spaceship, avec le symbole :<=>. L'opérateur de comparaison combiné peut facilement comparer deux variables, et bien sûr il n'est pas limité à la comparaison de données numériques.

Le format de la syntaxe est le suivant :

$c = $a <=> $b;

L'analyse est la suivante :

  • Si $a > $b, alors$cla valeur de1。
  • Si$a == $b, alors$cla valeur de0。
  • Si$a < $b, alors$cla valeur de-1。

Les exemples sont les suivants :

Exemple

<?php //Entier echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 //Nombre à virgule flottante echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 //Chaîne de caractères echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?>

Précédence des opérateurs

Le tableau suivant liste les opérateurs par ordre de priorité, du plus haut au plus bas. Les opérateurs d'une même ligne ont la même priorité, auquel cas leur associativité détermine l'ordre d'évaluation.

Explication: Gauche = de gauche à droite, droite = de droite à gauche.

Associativité Operator Informations complémentaires
Aucune clone new clone et new
Left [ array()
Right ++ -- ~ (int) (float) (string) (array) (object) (bool) @ Type et incrément/décrément
Aucune instanceof Type
Right ! Opérateurs logiques
Left * / % Opérateurs arithmétiques
Left + – . Opérateurs arithmétiques et opérateurs de chaînes
Left << >> Opérateurs bit à bit
Aucune == != === !== <> Opérateurs de comparaison
Left & Opérateurs bit à bit et références
Left ^ Opérateurs bit à bit
Left | Opérateurs bit à bit
Left && Opérateurs logiques
Left || Opérateurs logiques
Left ? : Opérateur ternaire
Right = += -= *= /= .= %= &= |= ^= <<= >>= => Opérateurs d'affectation
Left et Opérateurs logiques
Left xor Opérateurs logiques
Left ou Opérateurs logiques
Left , Utilisé à plusieurs endroits

Dans la priorité des opérateurs, or et ||, && et and sont tous des opérateurs logiques ayant le même effet, mais leur priorité est différente.

Exemple

<?php //Priorité : && > = > and //Priorité : || > = > or $a = 3; $b = false; $c = $a or $b; var_dump($c); //Ici $c est une valeur int 3, et non une valeur booléenne true. $d = $a || $b; var_dump($d); //Ici $d est une valeur booléenne true. ?>

La sortie des exemples ci-dessus est :

int(3)
bool(true)

Utilisation des parenthèses

Nous utilisons l'appariement de parenthèses pour indiquer explicitement l'ordre des opérations, plutôt que de nous fier à la priorité et à l'associativité des opérateurs, ce qui peut généralement améliorer la lisibilité du code.

Exemple

<?php //Les parenthèses sont prioritaires dans les opérations $a = 1; $b = 2; $c = 3; $d = $a + $b * $c; echo $d; echo "\n"; $e = ($a + $b) * $c; //Utilisation des parenthèses echo $e; echo "\n"; ?>

La sortie des exemples ci-dessus est :

7
9
Autres extensions