2010-06-16 4 views
4

Disons que j'ai une variable qui sera toujours une chaîne.== et === opérateurs dans php

Maintenant, prenez le code ci-dessous:

if($myVar === "teststring") 

Note: $myVar sera toujours une chaîne, donc mes questions est

Ce qui est plus rapide/meilleur, en utilisant === (indentité) ou == (égalité)?

+0

J'utiliserais == dans ce cas puisque vous ne vous souciez pas vraiment du type de $ myVar. Je suis sûr que les vitesses sont à peu près les mêmes (c'est si trivial que ça n'a pas d'importance - même dans une méga boucle). – AlexV

+0

Si vous décidez d'utiliser '==', inverser la condition ('" teststring "== $ myVar') permet d'intercepter d'éventuelles fautes de frappe (si vous ratez l'un des deux signes égaux, vous allez changer la valeur de' $ myVar' et avoir une condition toujours-vraie si!). – MartinodF

Répondre

6

Le test de l'identité est toujours plus rapide, car PHP n'a pas à taper Juggle pour évaluer la comparaison. Cependant, je dirais que la différence de vitesse est dans les domaines des nanosecondes et totalement négligeable.

lecture connexe:

+3

+1. Juste par curiosité, je viens d'exécuter un test rapide en plaçant une instruction '==' et un '===' dans une boucle afin qu'ils soient exécutés 10 millions de fois. Il n'y avait pas de réelle différence entre les deux. Répéter le test plusieurs fois '==' était parfois plus rapide, parfois plus lent, mais nous parlons vraiment d'une différence de 1 ms ... – nico

+1

@nico Cela dépend si '==' a déclenché une conversion de type ou non. Vous avez peut-être testé un cas où vous compariez des variables du même type (ou un cas où l'opérateur d'égalité ne tente même pas la conversion). – Artefacto

0

En général lorsque je code, j'utilise == sur ===, cependant, en utilisant l'identité est plus précise, et aussi, légèrement plus rapide (différence est minime).

La différence entre les deux est probablement sans importance pour tout ce dont vous avez besoin.

+2

IMHO '==' devrait être évité quand vous le pouvez car il faut plus d'efforts humains pour lire correctement comment le jonglage de type affecte l'instruction (surtout en PHP). Avec '===' c'est une correspondance exacte ou pas. –

+0

Je suis d'accord, et après avoir examiné en plus - im gunna modifier ma déclaration. –

2

=== sera un peu plus rapide, mais plus important encore, il Garantit que $myVarsera être une chaîne de sorte que vous n'avez pas s'inquiéter des effets possibles d'un autre type.