[Php-it] Quesito su isset (forse stupido).

Luca 'Ziabice' Gambetta lucagambetta at tiscali.it
Wed Mar 21 15:11:38 CET 2007


On Wed, 21 Mar 2007 10:25:10 +0100
Giovanni Battista Lenoci <gianiaz at gianiaz.net> wrote:

> Ciao, forse è una domanda stupida, però ci provo.
> 
> Quando mi arriva un valore numerico (ad esempio da post/get), vorrei 
> tramite una sola funzione verificare che :
> 
> 1. il valore sia settato
> 2. il valore sia numerico
> 3. il valore sia > 0
> 
> Mi sono scritto allora questa funzione:
> 
> 
> function isPositiveInt($val = null) {
> 
>     if(isset($val) && is_numeric($val) && $val) {
> 
>       return true;
> 
>     } else {
> 
>       return false;
> 
>     }
> 
> }
> 
> Solo che quando richiamo questa funzione passando un valore GET che
> in effetti non mi è arrivato ottengo il classico warning:
> 
> *Notice*:  Undefined index:  selezione in
> *C:\www\engine\admin\ecommerce.inc.php* on line *58
> 
> *C'è modo di fare quello che voglio in una funzione oppure devo
> rassegnarmi a testare ogni volta le variabili senza avvalermi della
> funzione? 
> 
> Ciao e grazie
> 

Prova così:

/*
 Ritorna FALSE se il valore non esiste o non è numerico.
 Funziona basandosi sul fatto che le variabili HTTP sono sempre delle
 STRINGHE
*/
function requestme($key, $use_get = FALSE) {
 if ($use_get) $r =& $_GET;
 else $m =& $_POST;
 if (array_key_exists($key, $m)) {
   if (is_numeric($m[$key])) return $m[$key];
 }
 return FALSE;
}

if (($pippo = requestme('pippo')) !== FALSE) {
 // fa qualcosa
 echo $pippo;
}

Oppure, sfruttando il fatto che qualsiasi valore == 0 per php equivale
a FALSE, se il valore è zero devi usare l'operatore di confronto con
type juggling !=.

-- 
"Uhm... l'ho detto o l'ho solo pensato?"
.::. Ziabice aka Luca Gambetta .::.


More information about the Php-it mailing list