J'ai programmé en PHP pendant un moment mais je ne comprends toujours pas la différence entre == et ===. Je sais que c'est une mission. Et == est égal à. Alors, quel est le but de ===?Que fait === faire en PHP
Répondre
Il compare la valeur et tapez l'égalité.
if("45" === 45) //false
if(45 === 45) //true
if(0 === false)//false
Il a un analogue: == qui compare le type et la valeur des inégalités
if("45" !== 45) //true
if(45 !== 45) //false
if(0 !== false)//true
Il est particulièrement utile pour des fonctions comme strpos - qui peut retourner 0 valablement!.
strpos("hello world", "hello") //0 is the position of "hello"
//now you try and test if "hello" is in the string...
if(strpos("hello world", "hello"))
//evaluates to false, even though hello is in the string
if(strpos("hello world", "hello") !== false)
//correctly evaluates to true: 0 is not value- and type-equal to false
Here's a good wikipedia table liste d'autres langues qui ont une analogie avec triple-égaux.
Il vérifie si le type de données est la même, ainsi que la valeur
if ("21" == 21) // true
if ("21" === 21) // false
===
compare la valeur et de type.
== ne compare pas les types, === fait.
0 == false
true, mais évalue
0 === false
ne le fait pas
C'est une véritable comparaison d'égalité.
"" == False
par exemple est true
.
"" === False
est false
Il est vrai que === compare la valeur et le type, mais il y a un cas qui n'a pas encore été mentionné et qui est lorsque vous comparez avec des objets == et === .
Vu le code suivant:
class TestClass {
public $value;
public function __construct($value) {
$this->value = $value;
}
}
$a = new TestClass("a");
$b = new TestClass("a");
var_dump($a == $b); // true
var_dump($a === $b); // false
Dans le cas d'objets === compare référence, non type et la valeur (comme $ a et $ b sont des deux types égaux et valeur).
Le manuel PHP a a couple of very nice tables ("Comparaisons lâches avec ==" et "Comparaisons strictes avec ===") qui montrent quel résultat == et === donneront en comparant différents types de variables.
Au minimum, === est plus rapide que == car il n'y a pas de coulée/coédition automagique en cours, mais c'est tellement minimal que cela vaut à peine la peine d'être mentionné. (bien sûr, je viens de le mentionner ...)
- 1. Que fait @ dans ce php?
- 2. Que fait "select ((select (s), $ | = 1) [0])" faire en Perl?
- 3. Que fait le mot-clé PHP 'var'?
- 4. ce que fait cette php regex?
- 5. Que fait typedef en C++?
- 6. Que fait glLoadIdentity() en OpenGL?
- 7. Que fait cet assemblage en ligne x86?
- 8. Que fait "return function() {...}" en JavaScript?
- 9. PHP - Code de fait presque ce que je veux à
- 10. Que fait MySQL en grande partie?
- 11. Que fait une déclaration "CALLBACK" en C?
- 12. Que fait stdole.dll?
- 13. IIS7 - que fait MaxProcesses?
- 14. Que fait cette fonction?
- 15. Que fait l'opérateur =>?
- 16. Que fait readlink systemcall?
- 17. Que fait exactement FillMode?
- 18. Que fait '@_' dans Perl?
- 19. Que fait exactement rangeOfCharacterFromSet?
- 20. Que fait ce javascript
- 21. Que fait [STAThread]?
- 22. Que fait sizeof (char *)?
- 23. Que fait '^' dans C# (Enums)?
- 24. Que fait ce code Javascript?
- 25. Que signifie "=>" en PHP?
- 26. Que fait (int ** array;) créer?
- 27. Que fait la méthode registerNatives()?
- 28. Que fait cette expression régulière?
- 29. Que fait cet attribut .NET?
- 30. Que fait {variable} dans flex
Dans le cas de strpos, ce "faux"/"vrai" commentaires n'est pas très clair, mais je suppose que vous pouvez le comprendre assez bien dans le contexte. – luiscubal
En outre, en raison des résultats que Tom souligne, il est presque toujours préférable d'utiliser === ou! == lors de l'évaluation des valeurs de retour. Même si la fonction ne renvoie pas de valeur ambiguë pour l'instant, cela peut changer dans le futur. –
@luiscubal - J'ai clarifié. –