=== 0 dans php

Eléphant du PHP | 89 Messages

10 mars 2011, 11:37

bonjour j'ai trouvé ce code if (strpos($key, 'alain') === 0)

j'ai pas compris 3 fois =
merci

Eléphant du PHP | 398 Messages

10 mars 2011, 11:43

Le == vérifie si deux valeurs sont identiques, mais avec un 3ième =, ça vérifie si le type des deux valeurs est bien aussi identique.

Regarde :
$a = '0';
$b = 0;
if ( $a == $b ){
	echo 'meme valeur';
}
if( $a === $b) {
	echo '<br>Meme valeur et meme type';
} else {
	echo '<br>Meme valeur mais pas meme type -> ' . gettype($a) . ' - ' . gettype($b) ;
} 
Le premier affichera bien "meme valeur".
Mais le second test, indiquera que le premier est de type string, et le deuxieme de type integer
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

ViPHP
AB
ViPHP | 5818 Messages

10 mars 2011, 17:43

Quand on fait " if( ) " avec une comparaison "==", si le résultat à l'intérieur du if vaut 0 alors if retourne false, car de manière large, 0 est assimilé à false.

Donc particulièrement dans le code if (strpos($key, 'alain') === 0) on cherche à savoir si "alain" est en début de chaine, c'est à dire si l'expression est à la position 0 puisqu'on commence à compter à 0. Quand la condition est remplie le retour est donc 0 et pour éviter de le confondre avec false on utilise la comparaison stricte "===", sinon on pourrait pas faire de différence entre l'expression non trouvée et l'expression trouvée en position 0.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 mars 2011, 17:53

il me semble que null est aussi considéré comme 0 / false ?

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 275 Messages

11 mars 2011, 11:05

La valeur numérique de null est 0, comme celle de false, mais null !== 0 / null !== false

ViPHP
AB
ViPHP | 5818 Messages

12 mars 2011, 04:50

Oui et par ailleurs dans l'exemple qui nous intéresse strpos retournera soit une valeur numérique si l'occurrence est trouvée et sinon false mais jamais null.