Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918

    differenza tra == e ===

    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.

  2. #2
    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 -

  3. #3
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918
    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.

  4. #4
    [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]
    scusa, ma è impreciso :-P

    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'; ?>

  5. #5
    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
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    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 -

  7. #7
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    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 )

    ?

  8. #8
    [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]
    ma no, ma no, ma no

    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.

  9. #9

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.