Amb el temps que fa que programo en PHP i mai m’havia trobat amb la necessitat d’usar aquest operador. De fet, el que hauria de dir és que mai m’havia imaginat que existia aquest operador. Segur que tots coneixeu el ‘==’ que simplement serveix per comparar si dos valors són iguals. Doncs bé, la diferència amb el ‘===’ és que es compara que siguin iguals i del mateix tipus. A mi m’ha servit per solucionar un problema molt senzill i que es feia molt complicat.
Per exemple, si tenim un array i fem una búsqueda d’un valor dintre de l’array amb la comanda array_search ens retornarà la clau que identifica la fila de l’array on hi ha el valor que busquem. Però si el valor no es troba en l’array ens retornarà un false. Si volem saber si s’ha trobat o no, podem fer un:
if ( $clau_retornada == false )
El problemilla d’aquest codi és que false és igual a 0 i si la busqueda retorna com a resultat la clau 0 (primera posició d’un array) aquí tindrem una resposta ambigua. Doncs bé si la condició hagués estat:
if ( $clau_retornada === false )
No haguéssim tingut aquest problema, ja que el zero retornat per la funció array_search en el cas de ser una clau hagués tingut un tipus numéric o alfanuméric, però no de tipus boleà. Així doncs, gràcies al operador del que parlem podriem evitar l’ambigüetat del valor retornat per la funció array_search.
0 thoughts on “L’operador ‘===’ en PHP”
On més he emprat aquest operador és quan es crida la funció strpos, que retorna la posició on es troba un substring dins d'un string.
És força usual trobar-se amb codis incorrectes que fan el següent:
if (strpos($cadena,$cerca)==false) {
echo "no es troba $cerca a $cadena";
}
Dic incorrectes, perquè amb $cadena="hola" i $cerca="h" el resultat de strpos seria 0 i per tant 0==false, amb lo qual ens llençaria el "no es troba cadena" quan realment no és així.
La sintaxi correcte, com bé comentes, seria amb l'operador ===
if (strpos($cadena,$cerca)===false) {
echo "no es troba $cerca a $cadena";
}
[1]
Bona aplicació i reflexió. De fet, trobo molt greu que fins ara no hagi descobert això i em fa molta ràbia. M'hagués fet moltíssims favors en el passat. Però bé, ja se sap que no es pot saber tot 😉