2009-07-13 6 views
42

J'ai remarqué quelqu'un utilisant l'opérateur PHP === dont je ne peux pas donner de sens. Je l'ai essayé avec une fonction, et cela correspond à des façons folles.Que signifie "==="?

Quelle est la définition de cet opérateur? Je ne peux même pas le trouver dans la déclaration des opérateurs PHP.

+24

FYI, vous ne pouvez pas vraiment google '===': http://www.google.com.au/recherche? q ==== – glasnt

+3

mais un peu plus d'info pour google aidera: ht tp: //www.google.com.sg/search? hl = fr & q =% 3D% 3D 3D + php + opérateur & btnG = Google + Recherche & meta = & aq = f & oq = – beggs

+0

@TomatoSandwich: Qu'en est-il - http: // www .google.com/search? q = trois + égal + signes + php =) – xk0der

Répondre

60
$a === $b  (Identical)  

TRUE si $a est égal à $b, et ils sont du même type. (Introduit en PHP 4)

PHP Docs

+3

Comme une note, cet opérateur d'égalité apparaît également dans Javascript et je crois que Perl. C'est assez commun. –

+12

Notez également que le == est également connu comme l'opérateur "permet de voir ce que je peux faire de ce", car il en résulte des perles telles que "100" == "1e2" et 0 == "un". –

+1

Ne sachant pas grand-chose sur PHP, je comprends le 100 = 1e2 (10 * 10^2) mais je ne comprends pas le "0" == "un"? Quelqu'un peut-il m'expliquer cela? – Ksempac

3

Les triples signe égal vérifie pour voir === si deux variables sont égales et de même type.

12

Vous pouvez lire here, bref résumé:

$ a == $ b égalité TRUE si $ est égal à $ b après la jonglerie de type.

$ a === $ b Identique à TRUE si $ a est égal à $ b, et ils sont du même type.

+0

Je me sens plutôt bête maintenant, que vous l'avez trouvé si vite, j'ai essayé de google sans grand succès .. Merci tout le monde de toute façon. –

+2

dans php.net vous avez des réponses sur 99% de votre question à ce sujet. –

50

http://www.php.net/ternary

$ a == $ b égalité TRUE si $ est égal à $ b, sauf pour (True == -1) qui est toujours vrai.

$ a === $ b Identique à TRUE si $ a est égal à $ b, et ils sont du même type.

> "5" == 5; 
True 
> "5" === 5; 
False 
+0

Pas vrai. Les trois signes égaux renvoient faux si $ a et $ b sont des objets de la même classe, et ont les mêmes valeurs pour toutes leurs propriétés (respectives).Essayez-le vous-même: classe FirstClass { public $ a; public $ b; \t fonction FirstClass() { \t \t $ this -> a = 1; \t \t $ this -> b = 1; \t} } $ first = new FirstClass(); $ second = nouvelle FirstClass(); if ($ first === $ second) { \t echo "triple égal!"; \t } else { \t echo "triple pas égal!"; } –

+0

Dykam, exactement mon point de vue - mais je ne compare rien. Je dis juste que dans le cas d'objets ce n'est pas la valeur qui est comparée via ===, mais la référence réelle. C'EST À DIRE. ils peuvent être complètement les mêmes objets, c'est-à-dire, avec toutes les mêmes valeurs, mais toujours === montre faux, parce qu'ils ne sont pas la même référence. –

+0

Vous avez dit: $ a === $ b Identique à TRUE si $ a est égal à $ b, et ils sont du même type. Je dis simplement que ce n'est pas vrai du tout. Arrêt complet. –

1

Voir Double and Triple equals operator in PHP que je suis arrivé à googler sur "PHP trois égalent opérateur".

À un moment donné, il dit que:

Un double signe = est une comparaison et teste si la variable/expression/constante à la gauche a la même valeur que la variable/expression/constante à droite . Un triple = signe est une comparaison pour voir si deux variables/expressions/constantes sont égales ET ont le même type - c'est-à-dire les deux sont des chaînes ou les deux sont des entiers.

Il donne également un exemple pour l'expliquer.

1

Pour PHP, il y a beaucoup de significations différentes zéro peut prendre

  1. il peut être une valeur booléenne fausse
  2. il pourrait être une valeur nulle
  3. Il pourrait vraiment être un zéro

Donc === est ajouté pour s'assurer que le type et la valeur sont les mêmes.

9

En 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 interprété qui n'est pas strict sur les types de données. Cela signifie que le langage lui-même essayera de convertir les types de données, chaque fois que nécessaire.

echo 4 + "2"; // output is 6 

La sortie est la valeur entière 6, car + est l'opérateur d'addition numérique en PHP, donc si vous fournissez opérandes avec d'autres types de données à elle, PHP d'abord les convertir à leur type approprié (« 2 » être converti en 2), puis effectuer l'opération.

Si vous utilisez == comme opérateur de comparaison avec deux opérandes pouvant être dans des types de données différents, PHP convertira le deuxième type d'opérande en premier. Alors:

4 == "4" // true

PHP convertit "4" à 4, et compare ensuite 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, alors ils ne sont pas identiques.

4 === "4" // false

0

"===" correspondant à la valeur de la variable ainsi que le type de données de la variable.

4

Vous verrez cet opérateur dans de nombreuses langues dynamiquement typées, pas seulement PHP.

==== essaie de convertir tout ce qu'il traite en types qu'il peut comparer.

=== compare strictement le type et la valeur.

Dans tout langage typé dynamiquement, vous devez être prudent avec ==, vous pouvez obtenir des bogues intéressants. Le === ternaire est moins pratique, mais il est plus sûr.Pour les comparaisons, vous devriez toujours donner une idée supplémentaire si elle doit être === ou ==

6

$x == $y est vrai si la valeur du $ x et $ y sont les mêmes:

$x = 1; //int type 
$y = "1"; //string type 
if ($x == $y) { 
    // This will execute 
} 

$x === $y TRUE si la valeur de les $ x et $ y sont identiques et le type de $ x et $ y sont les mêmes:

$x = 1; //int type 
$y = "1"; //string type 
if ($x === $y) { 
    // This will not execute 
}