Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [php] not equal

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428

    [php] not equal

    salve,
    anche oggi non può mancarmi l'ora del fagiano e perdermi in un bicchier d'acqua!
    In pratica stavo sbattendo contro il != per un if statment.
    Che lo 0 equivalga al false, mi sta bene, però perchè un if di questo tipo non funziona :master:
    codice:
    $pippo = 0;
    if($pippo != "%") {
     ..fai qualcosa..
    }
    cioè.. anche se pippo non fosse un intero e valesse false, è cmq diverso da una qualsiasi stringa no!?
    poi vabbeh posso usare tranquillamente !== però in questo momento mi sta sfuggendo qualcosa per il !=


  2. #2
    non riesco a seguirti.. la condizione dovrebbe essere true no?

    0, false o "0" è in ogni caso divrso da "%"


    il problema semmai si pone quando hai 0 e "" che possono essere considerati uguali in quanto php è un linguaggio non tipizzato (ma si può risolvere tutto con !== e === come hai già detto)


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    concordo sul fatto che la condizione dovrebbe essere true, e invece nn esegue il blocco di istruzioni, ho dovuto forzare il controllo con !==, altrimenti nel caso di 0 lui nn entrava nell'if!

  4. #4
    Originariamente inviato da Gnegno
    concordo sul fatto che la condizione dovrebbe essere true, e invece nn esegue il blocco di istruzioni, ho dovuto forzare il controllo con !==, altrimenti nel caso di 0 lui nn entrava nell'if!
    normale se lo confronti con 0... ma curioso se lo confronti con % :master:

    boh...

  5. #5
    E' giusto che si comporti così.
    (notare parte in grassetto)
    When a string is evaluated as a numeric value, the resulting value and type are determined as follows.

    The string will evaluate as a float if it contains any of the characters '.', 'e', or 'E'. Otherwise, it will evaluate as an integer.

    The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero).

  6. #6
    Originariamente inviato da skidx
    E' giusto che si comporti così.
    (notare parte in grassetto)
    quindi il fatto che la variabile sia di tipo numerico forza a valutare la stringa successiva come numero? :master:

    Sta cosa mi suona nuova... pensavo che solo la stringa vuota fosse considerata zero.. e che in presenza di una stringa non numerica un check del genere fallisse...

  7. #7
    Originariamente inviato da }gu|do[z]{®©
    quindi il fatto che la variabile sia di tipo numerico forza a valutare la stringa successiva come numero? :master:

    Sta cosa mi suona nuova... pensavo che solo la stringa vuota fosse considerata zero.. e che in presenza di una stringa non numerica un check del genere fallisse...
    La stringa vuota viene considerata zero in senso booleano. Infatti if('%') è TRUE perché la stringa non è vuota.
    Ma se lo confronti con un numero, proverà a valutare la stringa come tale, e in quel caso (non in senso booleano/logico quindi) la stringa che non rappresenta un numero viene valutata zero.

    Il problema comunque non dovrebbe porsi perché se voglio considerare che una stringa non sia vuota faccio if($pippo != '')

    Ah, se confronti due tipi diversi per forza di cose uno dei due viene convertito implicitamente.

  8. #8
    Originariamente inviato da skidx
    Ah, se confronti due tipi diversi per forza di cose uno dei due viene convertito implicitamente.
    sì quello sì.. ma credevo che solo la stringa vuota valesse zero.. ma effettivamente.. che valore dare ad na stringa non vuota e non numerica? sì.. ha senso

  9. #9
    Originariamente inviato da }gu|do[z]{®©
    sì quello sì.. ma credevo che solo la stringa vuota valesse zero..
    perché in generale la prima che viene in mente è la sua conversione in valore logico (cioè in tipo booleano), è più comune testare una variabile stringa facendo
    if($stringa)
    invece di if(strlen($stringa) == 0)

    A prima vista leggendo il codice del primo post anche io avevo pensato che l'if() fosse TRUE, proprio tratto in inganno da questa abitudine.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    mmhh.. ora sono un po assonnato.. però dovrei aver capito!
    grazie!


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.