J'ai remarqué que quelqu'un utilise l'opérateur PHP ===
dont je ne comprends pas le sens. Je l'ai essayé avec une fonction, et cela correspond de façon folle.
Quelle est la définition de cet opérateur? Je ne le trouve même pas dans la déclaration des opérateurs PHP.
$a === $b (Identical)
[~ # ~] vrai [~ # ~] si
$a
est égal à$b
, et ils sont du même type. (introduit dans PHP 4)
$ a == $ b Égal VRAI si $ a est égal à $ b, à l'exception de (True == -1) qui est toujours True.
$ a === $ b Identique VRAI si $ a est égal à $ b, et ils sont du même type.
> "5" == 5;
True
> "5" === 5;
False
Vous pouvez lire ici , bref résumé:
$ a == $ b Égal VRAI si $ a est égal à $ b après avoir jonglé avec le type.
$ a === $ b Identique VRAI si $ a est égal à $ b, et ils sont du même type.
Dans PHP vous pouvez comparer deux valeurs en utilisant l'opérateur == ou l'opérateur ===. La différence est la suivante:
PHP est un langage dynamique et interprété qui n'est pas strict sur les types de données. Cela signifie que la langue elle-même essaiera de convertir les types de données, si nécessaire.
echo 4 + "2"; // output is 6
La sortie est une valeur entière 6, car +
est l'opérateur d'addition numérique en PHP, donc si vous lui fournissez d'autres types de données, PHP les convertira d'abord en leur type approprié ("2" sera converti en 2) puis effectuez l'opération.
Si vous utilisez == comme opérateur de comparaison avec deux opérandes qui peuvent être dans des types de données différents, PHP convertira le deuxième type d'opérande, en premier. Donc:
4 == "4" // vrai
PHP convertit "4" en 4, puis compare les valeurs. Dans ce cas, le résultat sera vrai.
Si vous utilisez === comme opérateur de comparaison, PHP n'essaiera pas de convertir les types de données. Donc, si les types des opérandes sont différents, ils ne sont PAS identiques.
4 === "4" // false
$x == $y
est VRAI si les valeurs de $ x et $ y sont identiques:
$x = 1; //int type
$y = "1"; //string type
if ($x == $y) {
// This will execute
}
$x === $y
TRUE si la valeur de $ x et $ y sont identiques et le type de $ x et $ y sont identiques:
$x = 1; //int type
$y = "1"; //string type
if ($x === $y) {
// This will not execute
}
Vous verrez cet opérateur dans de nombreux langages typés dynamiquement, pas seulement PHP.
==
essaiera de convertir tout ce qu'il traite en types qu'il peut comparer.
===
comparera strictement le type et la valeur.
Dans toute langue typée dynamiquement, vous devez être prudent avec ==, vous pouvez obtenir des bugs intéressants.
Le ternaire ===
est moins pratique, mais c'est plus sûr. Pour les comparaisons, vous devriez toujours vous demander si cela devrait être ===
ou ==
Le signe triple égal === vérifie si deux variables sont égales et du même type.
Voir Double et triple égal opérateur en PHP que j'ai obtenu pour googler sur "PHP trois égal opérateur".
À un moment donné, il dit que:
Un signe double = est une comparaison et teste si la variable/expression/constante à gauche a la même valeur que la variable/expression/constante à droite.
Un signe triple = est une comparaison pour voir si deux variables/expressions/constantes sont égales ET ont le même type - c'est-à-dire que les deux sont des chaînes ou les deux sont des entiers.
Il donne également un exemple pour l'expliquer.
Pour PHP, il existe de nombreuses significations différentes qu'un zéro peut prendre
Donc === est ajouté pour garantir que le type et la valeur sont identiques.
"===" correspondant à la valeur de la variable ainsi qu'au type de données de la variable.