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

    Problema assurdo con function e between

    Ciao a tutti,
    sto impazzendo per una cosa che superficialmente dovrebbe essere banalissima!!!

    Ora, ho questa semplicissima funzione, che in base ad un numero XY, lui mi stampa altro:

    codice:
    function rating_piccoli( $string )
    {
    if ($string > 0 && $string <=50) { $string = "160px"; }
    if ($string > 50 && $string <=150) { $string = "140px"; }
    if ($string > 150 && $string <=200) { $string = "120px"; }
    if ($string > 200 && $string <=300) { $string = "100px"; }
    if ($string > 300 && $string <=500) { $string = "80px"; }
    if ($string > 500 && $string <=1000) { $string = "60px"; }
    if ($string > 1000 && $string <=1500) { $string = "40px"; }
    if ($string > 1500) { $string = "20px"; }
       return $string;
    }
    
    $ciccio = 1;
    echo rating_piccoli($ciccio);
    exit;
    Nel mio caso dovrebbe darmi "160px" perchè ciccio è compreso tra 0 e 50 ... e invece però mi stampa "120px", ovvero come se fosse compreso tra 150 e 200!

    Accidenti, ma perchè???

    Grazie!!!!
    Perchè uso Maxthon? | Mi piace questa chat

  2. #2
    Codice PHP:
    function rating_piccoli$string )
    {
    if (
    $string && $string <=50) { $string "160px"; }
    else if (
    $string 50 && $string <=150) { $string "140px"; }
    else if (
    $string 150 && $string <=200) { $string "120px"; }
    else if (
    $string 200 && $string <=300) { $string "100px"; }
    else if (
    $string 300 && $string <=500) { $string "80px"; }
    else if (
    $string 500 && $string <=1000) { $string "60px"; }
    else if (
    $string 1000 && $string <=1500) { $string "40px"; }
    else if (
    $string 1500) { $string "20px"; }
       return 
    $string;
    }

    $ciccio 1;
    echo 
    rating_piccoli($ciccio);
    exit; 

  3. #3
    Il perche' e' semplice: dopo il primo controllo (che e' verificato) $string vale "160px". Il problema e' che dopo sullo stesso valore esegui altri controlli e $string viene trasformato in 160 (visto che il controllo e' una disuguaglianza numerica) e quindi e' verificato il terzo controllo che fa diventare $string "120px".

    Suggerimento di refactoring:
    Codice PHP:
    function rating_piccoli$string ) {
        if ( 
    $string <     ) return $string;
        if ( 
    $string <=   50 ) return "160px";
        if ( 
    $string <=  150 ) return "140px"
        if ( 
    $string <=  200 ) return "120px"
        if ( 
    $string <=  300 ) return "100px"
        if ( 
    $string <=  500 ) return "80px"
        if ( 
    $string <= 1000 ) return "60px"
        if ( 
    $string <= 1500 ) return "40px"
        if ( 
    $string >  1500 ) return "20px"


  4. #4
    Fantastisco, non avevo pensato al fatto che la stringa la ricambiassi ogni volta!!!

    Grazie per la risposta e per il metodo corretto, è stato molto stimolante
    Perchè uso Maxthon? | Mi piace questa chat

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.