quand'è che si usa === e quando == ?
grazie
quand'è che si usa === e quando == ?
grazie
You cannot discover new oceans unless you have the courage to lose sight of the shore
Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.
se usi == il valore ha bisogno di essere solo uguale nel contenuto, mentre === ha bisogno di essere uguale anche nel tipo di variabile per restituire TRUE
esempio
se fai
if ( 0 == "0" )
{
// Restituisce true perke tutti è due sono 0
}
if ( 0 === "0")
{
// Invece qui restituisce False poiche, anche essende tutti e due 0, sono di tipo diverso
// Il primo è di tipo int , mentre il secondo e di tipo stringa
}
Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
Mac Future User , Ventilatore for PC Cooler user , - dry is coming -
ok, grazie![]()
You cannot discover new oceans unless you have the courage to lose sight of the shore
Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.
scusa, ma è impreciso :-P[supersaibal]Originariamente inviato da bonaprogram
se usi == il valore ha bisogno di essere solo uguale nel contenuto, mentre === ha bisogno di essere uguale anche nel tipo di variabile per restituire TRUE
esempio
se fai
if ( 0 == "0" )
{
// Restituisce true perke tutti è due sono 0
}
if ( 0 === "0")
{
// Invece qui restituisce False poiche, anche essende tutti e due 0, sono di tipo diverso
// Il primo è di tipo int , mentre il secondo e di tipo stringa
} [/supersaibal]
il valore deve essere uguale "dopo l'eventuale casting di tipo"
0 è un interger
"0" la stringa del solo carattere 0
"" è la stringa vuota
NULL è il tipo che indica un valore non impostato
FALSE è il valore booleano
"FALSE" è la stringa
tutti questi valori vengono castati (trasformati nel tipo ) in FALSE quindi dire 0=="0" è come dire FALSE==FALSE .. perchè == è un operatore booleano e quindi il casting avviene a bool e non a int o a stringa.
usare === significa evitare il casting implicito (type juggling) e quindi
0 === "0"
non è "vero" perchè 0 come intero non è uguale alla stringa "0"
:-)
<?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
' socio fondatore e membro del direttivo del GrUSP ',"\n",
' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>
io sapevo che erano === solo qualora avessero in heap lo stesso dato associato ... che piu' o meno pero' e' quello che dice AlberT , ovvero se sono identici , che contengono quindi lo stesso dato nella heap , allora sono = = = , se sono simili, che un casting li rende simili, ma non identici ( esempio "true" e true , o "1" e true ) allora sono = = ... altrimenti sono differenti
teoricamente volevo dire quello, ma ho confuso un po il concetto![]()
Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
Mac Future User , Ventilatore for PC Cooler user , - dry is coming -
Ma detto più semplicemente non sarebbe
a==b
a e b castabili allo stesso valore (tipo 0==false, 5=="5")
a===b
a e b sono dello stesso tipo e hanno lo stesso valore
(quindi 0===false non è vera )
?
ma no, ma no, ma no[supersaibal]Originariamente inviato da drAlberT
tutti questi valori vengono castati (trasformati nel tipo ) in FALSE quindi dire 0=="0" è come dire FALSE==FALSE .. perchè == è un operatore booleano e quindi il casting avviene a bool e non a int o a stringa.[/supersaibal]![]()
l'operatore di CONFRONTO (qualsiasi esso sia, uguale, minore o uguale, diverso, etc. etc.) RESTITUISCE un valore booleano, ma NON converte gli operandi in booleani.
Altrimenti ogni confronto tra stringe non vuote darebbe sempre TRUE, bella forza
Credo tu abbia fatto confusione tra operatori di CONFRONTO e operatori LOGICI (and, or, etc. che necessitano ovviamente di operandi logici, quindi booleani).
Per la domanda iniziale, semplicemente === (e specularmente !==) fa un confronto anche sul tipo degli operandi, tipo che in PHP è implicito, ma esiste comunque.
solo per la cronaca... http://it2.php.net/operators.comparison