[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