Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    ("stringa" == 0) restituisce true

    Uso il PHP da anni ma oggi ho cannato su una riga di codice che fa vacillare le mie sicurezze:

    Codice PHP:
    <?php
    if ("stringa" == 0) { echo "Secondo PHP 'stringa' è uguale a 0."; }
    ?>
    Credevo di avere le traveggole o di sbagliato qualcosa ma dopo molti controlli ho concluso che era tutto a posto, quindi ho supposto addirittura un'anomalia del server...
    Ho fatto il test su un altro server e PHP dice sempre la stessa cosa, quindi suppongo di non sapere qualcosa di importante che fino ad oggi mi era sfuggito (e che non mi era capitato) su PHP.

    Qualcuno può delucidarmi sul motivo per cui PHP restituisce true a questo confronto?

    Grazie
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    codice:
    Se si confronta interi con stringhe, la stringa viene convertita in numero.
    Se si confronta due stringhe numeriche, queste vengono confrontate come interi.
    Queste regole valgono anche per l'istruzione switch.
    http://www.php.net/manual/it/languag...comparison.php

  3. #3
    Da tenere bene a mente, grazie.
    L'avrò studiato ma mai usato. Ho spesso usato anche l'operatore === per considerare il tipo (che qui funzionava ma per questioni di retrocompatibilità non volevo usare), però non mi era capitato proprio mai un confronto del genere.

    La soluzione quindi è fare un type-casting per confrontare variabili dello stesso tipo:
    Codice PHP:
    if ("stringa" == (string)0) { echo "'stringa' è uguale a (string)0."; } 
    Le variabili provenivano da un select input insolito che poteva assumere sia valori letterali sia valori numerici.

    Thanks

    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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.