Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [Dal manuale] String comparison

    Ciao a tutti,

    leggendo il seguente post sulla pagina del manuale PHP .. [ http://it.php.net/manual/en/language...ring.php#85668 ]

    Ho incontrato questi risultati..

    Codice PHP:
    <?php

    # Dal manuale
    var_dump((float)'1.22.00' > (float)'01.23.00'); # bool (false)
    var_dump((float)'1.22.00' < (float)'01.23.00'); # bool(true)

    # Modificato
    var_dump('1.22.00' '01.23.00'); # bool(true)
    var_dump('1.22.00' '01.23.00'); # bool(false)
    ?>
    Perchè gli ultimi due risultati danno i rislutato che danno?


    Grazie.

  2. #2
    Premetto che non ho guardato la funzione su php.net

    Tuttavia a livello di logica non dovrebbe funzionare come ogni linguaggio in cui la dichiarazione è intrinseca?

    Se tu non gli dici che è un float... non è possibile che lui lo veda come stringa?

  3. #3
    Se tutte e due le stringhe sono numeriche (contengono solo il numero valido) l'operatore "<" (oppure ">") fa un confronto numerico. Altrimenti si confrontano i caratteri della stringa. Nel tuo caso nessuna delle due stringhe è numerica (ognuna contiene due punti).

    Esempio:
    Codice PHP:
    <?php  
    var_dump
    ('1.22' '01.23');                 // false
    var_dump('1.22.00' '01.23.00');        // true
    ?>
    Nel primo caso tutte e due le stringhe contengono un numero valido, quindi si confrontano i numeri "1.22 > 1.23". Nel secondo caso le stringhe non sono numeriche, quindi si confrontano i caratteri uno alla volta ('1' > '0').
    Spero di essere stato chiaro

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Capito, quindi..

    Codice PHP:
    <?php

    var_dump
    ('1.22' '01.23'); // false

    ?>
    ..perchè 2 è maggiore di 3? ..nel senso che "è al secondo posto e dopo viene il 3" ?



    Ho capito bene?


    Grazie ragazzi.



    EDIT: ..scusate, volevo dire il contrario di ciò che ho detto

  5. #5
    Codice PHP:
    <?php
    var_dump
    (is_numeric('1.22'));       // true
    var_dump(is_numeric('1.23'));       // true

    // visto che tutte e due le stringhe sono numeriche
    // non sono confrontate come i caratteri ma come i numeri 1.22 e 1.23

    var_dump('1.22' '01.23');           // false

    // il confronto è falso perché 1.22 non è più grande di 1.23

    var_dump(is_numeric('1.22.00'));    // false
    var_dump(is_numeric('01.23.00'));    // false

    // le stringhe con 2 punti non sono numeriche

    var_dump('1.22.00' '01.23.00');     // true

    // il confronto è vero perché la prima stringa comincia con '1' e l'altra con '0'.

    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762







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.