par
Ryle » 16 mars 2007, 22:21
la différence entre ces deux opérateurs est de prendre ou non le type de variable en considération. Ainsi "1" est une chaine (String) tandis que 1 est un nombre (int)
Si tu les compares simplement ("1"==1), le test sera vrai, la valeur est la même. En revanche si tu compares ('1'===1) le test sera faux car l'un est un nombre et l'autre une chaine de caractère
C'est très utile en php avec les booléens. En effet, php interprête 0 et FALSE de la même manière, alors que tu as parfois besoin de distinguer les deux.
Un exemple simple est la fonction strpos() qui recherche si une chaine est présente dans une autre, et retourne l'index à partir du quel la chaine est trouvée et FALSE si la chaine n'est pas trouvée. Si tu compares simplement les valeurs (strpos(...)==FALSE) et que le texte cherché est au début de la chaine, la fonction retourne 0, php l'interprète comme faux et considère le test comme vrai alors que la chaine a pourtant bien été trouvée. Si tu compares les types en plus (strpos(...)===FALSE), la fonction retourne toujours 0, mais php considère que c'est un nombre et pas un booléen et considère le test comme faux, la chaine ayant été trouvée.
Pour la requête SQL, elle est très bien, ma remarque portait juste sur le fait qu'à la fin de celle-ci tu concatènes une chaine vide :
'SELECT ... WHERE id='.$_SESSION['id'].''
Ce n'est qu'un détail, mais comme cela ne sert à rien, autant la virer. Ca allègera le code et surtout rendra plus lisible
'SELECT ... WHERE id='.$_SESSION['id']
la différence entre ces deux opérateurs est de prendre ou non le type de variable en considération. Ainsi "1" est une chaine (String) tandis que 1 est un nombre (int)
Si tu les compares simplement ("1"==1), le test sera vrai, la valeur est la même. En revanche si tu compares ('1'===1) le test sera faux car l'un est un nombre et l'autre une chaine de caractère :)
C'est très utile en php avec les booléens. En effet, php interprête 0 et FALSE de la même manière, alors que tu as parfois besoin de distinguer les deux.
Un exemple simple est la fonction strpos() qui recherche si une chaine est présente dans une autre, et retourne l'index à partir du quel la chaine est trouvée et FALSE si la chaine n'est pas trouvée. Si tu compares simplement les valeurs (strpos(...)==FALSE) et que le texte cherché est au début de la chaine, la fonction retourne 0, php l'interprète comme faux et considère le test comme vrai alors que la chaine a pourtant bien été trouvée. Si tu compares les types en plus (strpos(...)===FALSE), la fonction retourne toujours 0, mais php considère que c'est un nombre et pas un booléen et considère le test comme faux, la chaine ayant été trouvée.
Pour la requête SQL, elle est très bien, ma remarque portait juste sur le fait qu'à la fin de celle-ci tu concatènes une chaine vide :
[php]'SELECT ... WHERE id='.$_SESSION['id'].''[/php]Ce n'est qu'un détail, mais comme cela ne sert à rien, autant la virer. Ca allègera le code et surtout rendra plus lisible :)
[php]'SELECT ... WHERE id='.$_SESSION['id'] [/php]