OPERADORS LÒGICS I DE COMPARACIÓ EN PHP

 

Els operadors de comparació permeten comparar dos valors, tal com el seu nom indica. En general, això ens servirà per prendre decisions. Per exemple, potser hem de decidir si autoritzar una operació segons existeixi saldo suficient en el seu compte bancari o no. Per a això en PHP disposem dels operadors que s'indiquen en la següent taula.

 

Nom

Exemple

Resultat

Més gran que

$a > $b

true si $a és major que $b false en cas contrari

Més petit que

$a < $b

true si $a és menor que $b false en cas contrari

Major o igual que

$a >= $b

true si $a és major o igual que $b

false en cas contrari

Menor o igual que

$a <= $b

true si $a és menor o igual que $b

false en cas contrari

Diferent

$a <> $b

ó

$a != $b

true si $a és diferent de $b false en cas contrari

Idèntic o estrictament igual

$a === $b

true si $a és igual a $b i són del mateix tipus

false en cas contrari

No idèntic o estrictament diferent

$a ¡== $b

true si $a no és igual a $bo no són del mateix tipus false en cas contrari

Igual

$a == $b

true si $a és igual a $b

false en cas contrari

La sintaxi coincideix amb l'empleada en altres llenguatges de programació.

A més dels operadors habituals existeixen els operadors === que s'interpreta com "és estrictament igual" i! == Que s'interpreta com "no és estrictament igual". Aquests operadors resulten una mica més complexos de comprendre per la qual cosa tornarem a parlar d'ells més endavant. De moment tenir en compte que si una variable conté $text1 = "1" i fem la comparació $texto1 === 1, obtindrem false, és a dir, que no és igual (perquè un text no és igual a un nombre). No obstant això una comparació com $text == 1 retornarà true ja que aquesta comparació no és estricta i tracta de realitzar automàticament conversions per comprovar si es pot establir una equivalència entre els dos valors. En aquest cas es busca l'equivalent numèric del text i després es fa la comparació, motiu pel qual s'obté true.

És a dir, si es compara un nombre amb una cadena de caràcters o la comparació implica cadenes de caràcters numèriques, cada cadena de caràcters és convertida en un nombre i la comparació es realitzarà numèricament excepte quan l'operador utilitzat és === o '== perquè, en aquests casos, també comparem el tipus.

 

OPERADORS LÒGICS EN PHP

Els operadors lògics, ens permeten crear condicions per a les diferents estructures en PHP, tant en estructures condicionals com en estructures repetitives. Els operadors lògics més importants són and (en espanyol: i) i or (en espanyol: o)

Nom

Exemple

Resultat

i O &&

$a i $b

cert si $a ca veritable i $b it veritable

false en cas contrari

o O ||

$a o $b

cert si $a o $b it veritat, o dos

false en cas contrari

xor

$a xor $b

true si $a o $b és true, però no ambdós

false en cas contrari

no Ö!

! $a

cert si $a No És veritat

false en cas contrari

Una condició pot ser tan llarga com es vulgui o necessiti i usar tants operadors lògics com es vulgui o necessitin. L'ús dels parèntesis atorgarà la prioritat de l'execució d'unes operacions i altres (com en matemàtiques).

Les expressions on s'utilitzen operadors lògics i relacionals tornen un valor booleà, és a dir, veritable (true) o fals (false). Per exemple si $a = 7 i $b = 5 l'expressió $a <$b retorna false (és falsa). Si $a = true i $b = false l'expressió $a && $b retorna false (és falsa perquè no es compleix que $a i $b siguin veritables). Si $a = true i $b = false l'expressió $a || $b retorna true perquè un dels dos operands és veritable. Si $a = true l'expressió! A retorna false (l'oposat o contrari).

L'operador || s'obté en la majoria dels teclats prement ALT GR+1, és a dir, la tecla ALT GR i el número 1 simultàniament.

Els operadors && i || es diuen operadors en curtcircuit perquè si no es compleix la condició d'un terme no s'avalua la resta de l'operació. Per exemple: ($a == $b && $c! = $d && $h> = $k) té tres avaluacions: la primera comprova si la variable a és igual a b. Si no es compleix aquesta condició, el ​​resultat de l'expressió és fals i no s'avaluen les altres dues condicions posteriors.

En un cas com ($a<$b || $c! = $d || $h <= $k) s'avalua si a és menor que b. Si es compleix aquesta condició el resultat de l'expressió és veritable i no s'avaluen les altres dues condicions posteriors.

L'operador! recomanem no utilitzar-lo fins que es tingui una certa destresa en programació. Una expressió com (!$ Es Visible) retorna false si ($ es Visible == true), o true si ($ es Visible == false). En general hi ha expressions equivalents que permeten evitar l'ús d'aquest operador quan es desitja.

 

OPERADOR DE NEGACIÓ APLICAT SOBRE NOMBRES O TEXT

Si $a = true seva negació! $a retorna false. Però què passa si $a és un nombre o un text? Si $a és un nombre es considera que equival a false si el seu valor numèric és 0, o que equival a true si el seu valor numèric és diferent de zero. Seguidament s'aplica la negació. Per tant si $a = 7, a es considera equivalent a true i! $a és false. Si $a = 0, a es considera equivalent a false i! $a és true.

Per cadenes de text, la cadena buida es considera equival a false i qualsevol altra cadena es considera que equival a true. Si $text1 = "" (cadena buida) llavors! $Texto1 val true.

 

ORDRE DE PRIORITAT, PRELACIÓ O PRECEDÈNCIA

Els operadors lògics i matemàtics tenen un ordre de prioritat o precedència. Aquest és un esquema general que indica l'ordre en què s'han d'avaluar en la majoria dels llenguatges de programació:

prioritat operadors javascript

Una expressió com $a + $b == 8 && $a- $b == 1 sent $a = 3 i $b = 5 suposarà que s'avalua primer $a + $b que val 8, després s'avalua $a - $b que val -2. Després s'avalua si es compleix que la primera operació és certa i després si la segona també és certa, resultant que no, pel que l'expressió és falsa.

 

COMPARACIÓ DE CADENES DE TEXT AMB OPERADORS RELACIONALS

Dues cadenes de text es poden comparar resultant que es comparen lletra a lletra pel valor de l'equivalent numèric de cada lletra. Cada lletra té un nombre associat: per exemple la a és el número 97, la b el 98, etc.

Si comparem "avellana" <"síndria" obtenim true.

No obstant això, els codis numèrics poden generar resultats no previstos. Per exemple, què codi numèric és menor, el de la a o el de l'A? Encara més, resulta que tots els codis numèrics de majúscules són menors que els de minúscules, amb la qual cosa podem obtenir que 'Zulu' <'avellaner' torna true (cosa que a priori ens resultarà certament estranya).

Per comparar cadenes en base a un ordre alfabètic necessitarem usar llavors altres tècniques que comentarem més endavant.

 

EXEMPLE

Escriu aquest codi en un editor com Notepad++ i guardeu amb un nom de fitxer com exemple1.php. A continuació, puja el fitxer al servidor i visualitza el resultat.

<? Php

$a = 3 ;

$b = 9 ;

$resultat = ($a<=3 i $b<>9 );

if ($resultat==veritat) {

echo "Es compleix la condició" ;

} Else {

echo "No es compleix la condició" ;

}

?>

 

EXERCICI

Donades les variables de tipus sencer amb valors $a=5, $b=3, $c=-12 indicar si l'avaluació d'aquestes expressions donaria com a resultat vertader o fals:

a) $a>3

b) $a>c$

c) a$<$c

d) $b<c$

i) $b!=$c

f) $a==3

g) $a==*$b 15

h) $a * $b== -30

i) $c/b$<$a

j) $c/$b==-10

k) $c/$b==-4

l) $a $+ b + c $ 5 ==

m) ($a+$b==8)&&($a-$b==2)

n) ($a+$b==8)||($a-$b==6)

o) $a>3&&$b>3&&$c<3

p) $a>3&&$b>=3&&$c<-3

Crea el codi PHP on declaris aquestes variables, els assignes valors i mostres per pantalla el valor de veritat que tenen cadascuna de les expressions abans indicades.