Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [BUG] Type casting on boolean expressions doesn't work

    Hola a tutti

    ho aperto questo post per segnalare questo bug
    http://bugs.php.net/bug.php?id=36938

    Vorrei che, chi avesse la possibilità ovviamente, provasse a fare un type casting che cambi il valore sul quale è applicato su un'espressione boleana e postasse qua il risultato, il codice, la versione del so e la versione di php

    gracias

  2. #2
    mi hanno appena risposto che 0 è uguale a zero quindi non c'è bug

    ma a me non mi pare di aver convertito la stringa in numero

    ora vorrei andare a controllare per bene il manuale, comunque è semplicemente assurdo

  3. #3
    Originariamente inviato da daniele_dll
    comunque è semplicemente assurdo
    il fatto che non leggi il manuale prima di dire che è un baco direi che è assurdo

  4. #4
    Originariamente inviato da daniele_dll
    mi hanno appena risposto che 0 è uguale a zero quindi non c'è bug

    ma a me non mi pare di aver convertito la stringa in numero

    ora vorrei andare a controllare per bene il manuale, comunque è semplicemente assurdo
    E' un problema di casting.

    Se usi un numerico in una struttura di comparazione, di controllo questa struttura viene forzata a numerico in tutti i suoi componenti. Quindi $valore e' FALSE (come valore numerico) == $_v che contiene 0. In sostanza esegue un eval su $valore.

    Prova a passare a $_v uno zero come stringa e vedrai che lo riconosce come diverso.
    codice:
    $valore = 'qwerty';
    $_v = "0"; //intval($valore);
    
    if ( $valore == $_v ) echo "vero";
    else echo "falso";
    Oppure usando l'operatore identico ===


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    La rappresentazione di un tipo integer di un valore di tipo stringa é pari a zero.E' vero é scritto sul manuale http://www.php.net/manual/it/languag...ing.conversion
    Daniele non é colpa tua il fatto é che tu programmi con
    linguaggi veri !!

  6. #6
    Originariamente inviato da andrea.paiola
    il fatto che non leggi il manuale prima di dire che è un baco direi che è assurdo
    partendo dal fatto che nelle versioni precedenti non era cosi
    ma comunque, a rigor di logic, mi risulta che zero sia diverso da qwerty

    io non sto facendo un type casting della stringa a numero quindi non vedo perché mai php deve convertirmi una stringa in un numero senza che lo faccia io

    e se php fa un casting da stringa a numero per confrontarli fa una GRANDISSIMA cavolata perché non solo rompe la compatibilità con un BOTTO di script che usavano questo sistema ma in aggiunta, nel passaggio da php4 a php5 non è stato minimamente segnato come cosa

  7. #7
    Originariamente inviato da kioto
    La rappresentazione di un tipo integer di un valore di tipo stringa é pari a zero.E' vero é scritto sul manuale http://www.php.net/manual/it/languag...ing.conversion
    Daniele non é colpa tua il fatto é che tu programmi con
    linguaggi veri !!
    grazie al cavolo

    io per l'appunto non sto convertendo il testo in numero

    edit:
    per chiarezza ... io non sto convertendo TUTTI E DUE i valori in numeri ma solo uno

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    Scusa ma io ho letto questo codice che hai sottoposto al bug
    report:
    <?php

    $valore = 'qwerty';

    if ($valore == (int)$valore)
    {
    echo "variable contains a valid numeric value!";
    }
    else
    {
    echo "variable doesn't contains a valid numeric value!";
    }
    ?>

    Io personalmente vedo un cast in quella condizione e la risposta é che PHP cerca di uniformare anche l'operando di sinistra a intero per eseguire il confronto.
    Sul manuale al link che dicevo esplicita che la conversione
    da stringa a integer é zero (anche se la fa il parser in autonomia) e quindi stai comparando if (0 == 0) ///bla bla
    Spero di aver compreso il punto della questione.

  9. #9
    Daniele ... Il fatto che non mi quoti mi suona come se tu non mi avessi letto....


    Per quanto mi risulti in 4.3.x era gia' cosi', e forse anche prima. In pratica non esegue una comparazione impossibile tra una stringa ed un numero a meno che tu non richieda un identico ( === ). Ci prova a fare il casting a numerico della stringa. magari dentro c'era un numero.

    Mentre e' molto poco probabile che dentro ad un numerico ci possa essere una stringa... giusto?


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Ti hanno risposto RTFM :maLOL: :maLOL: :maLOL: :maLOL: :maLOL: :maLOL: :maLOL: :maLOL:
    There are 10 types of people in the world - those who understand binary and those who don't.

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.