• User Attivo

    Funzione is_nan

    Ciao a tutti! Per favore, sapete farmi mica un esempio pratico riguardante la funzione is_nan? Sò che serve per verificare se un numero è realmente un numero ma non conosco la sintassi e purtroppo con l'inglese sono a zero :crying:

    Grazie moltissime!
    Ciao!!!


  • ModSenior

    Ciao Fabrizio23,

    Per verificare sia un numero puoi utilizzare is_numeric.


  • User Attivo

    Grazie, ma la sintassi corretta me la sai dire?


  • User Attivo

    Ciao,
    is_nan() è una funzione matematica di php che ti permette di verificare se una variabile numerica è effettivamente un numero oppure un NaN.
    Differentemente da is_numeric(), che ti ha segnalato Thedarkita, alla funzione is_nan() devi sempre passare un dato di tipo numerico (float).
    NaN (Not a Number) è infatti un valore che può essere memorizzato in una variabile di tipo numerico, ad esempio, come risultato di un'altra funzione matematica ma che non corrisponde ad alcun valore numerico definito.
    Ad esempio: acos(2) restituisce come risultato NaN.

    La sintassi di is_nan è semplice:
    devi passargli come parametro il dato numerico da verificare e la funzione ti restituisce un valore booleano vero/falso.

    Esempio:
    [php]
    $a = 2;
    $b = acos( 2 );

    if ( is_nan($a) ) echo "Non è un numero <br />";
    else echo "E' un numero <br />";

    if ( is_nan($b) ) echo "Non è un numero <br />";
    else echo "E' un numero <br />";

    [/php]

    Come ti ha indicato Thedarkita, se vuoi verificare se un dato (ad esempio ricevuto tramite GET o POST) è numerico, devi utilizzare is_numeric() alla quale puoi passare un qualsiasi tipo di dato (ad esempio una stringa).
    La sintassi ed il funzionamento è identica a quella di is_nan()
    [php]
    $a = "+232.6";
    $b = "ciao";

    if ( is_numeric($a) ) echo "E' un dato numerico<br />";
    else echo "Non è un dato numerico<br />";

    if ( is_numeric($b) ) echo "E' un dato numerico<br />";
    else echo "Non è un dato numerico<br />";

    [/php]

    Per chiarire meglio la differenza tra is_nan e is_numeric ecco un altro esempio:
    [php]
    $b = acos( 2 );

    if ( is_numeric($b) ) echo "E' un dato numerico<br />";
    else echo "Non è un dato numerico<br />";

    if ( is_nan($b) ) echo "Non è un numero <br />";
    else echo "E' un numero <br />";
    [/php]

    Il risultato sarà:
    E' un dato numerico
    Non è un numero

    Sembra un paradosso, ma non è così.
    La variabile $b contiene il valore NaN che è un dato numerico (e is_numeric ce lo conferma), ma non è numero 🙂

    Alessandro


  • User Attivo

    Grazie Ale, sei un grande anche a spiegare e grazie anche a