2010-08-08 8 views
0

Pourquoi CE NE FONCTIONNE PAS lorsqu'il est appelé par ex. wd (1) (il renvoie toujours '-2')?Appel de fonction PHP ne fonctionne pas - problème de casting présumé?

$zoom=$user['zoom']; 
function wd($hrs){ 
    return $hrs*$zoom-2; 
} 

mais cela fonctionne très bien:

function wd($hrs){ 
    return $hrs*30-2; 
} 

À supposer que ce fut un problème de casting, j'ai essayé toutes sortes de variations comme

(int)$hrs * ((int)$zoom) 

ou

(int)$hrs * (float)$zoom 

mais pas succès :(

Toute aide serait appréciée.

(Et BTW, est-il important que la fonction est située dans

include('header.php') 

- bien que je l'ai essayé tant à l'intérieur qu'à l'extérieur de l'en-tête?)

Répondre

3

EDIT: vous devez passer cette variable comme argument à la fonction, mais si vous devez absolument garder la variable globale, procédez comme suit.

Vous devez apporter le global dans le périmètre:

$zoom=$user['zoom']; 
function wd($hrs){ 
    global $zoom; 
    return $hrs*$zoom-2; 
} 
+1

L'utilisation de globals n'est vraiment pas idéale (surtout si ce n'est pas nécessaire). –

+0

D'accord. Modifier ci-dessus. –

+0

Merci. Si simple ... – ajo

1

Ce n'est pas une question de casting - c'est parce que vous essayez d'utiliser une variable qui est .

Alors que vous aurez besoin de lire les docs PHP pour la version complète, à un niveau de base, vous pouvez seulement accéder aux variables qui sont définies dans la même fonction ou méthode. (Bien que vous pouvez utiliser le mot-clé global pour accéder aux variables globales Cela dit, les variables globales ne sont pas idéales..)

En tant que tel, vous pouvez simplement mettre à jour votre fonction pour passer aussi dans « zoom » comme paramètre comme suit:

function wd($hrs, $zoom){ 
    return $hrs*$zoom-2; 
} 
+0

Pour une raison qui n'a pas fonctionné quand je l'ai essayé avant? – ajo

+0

@ user381636 Probablement une faute de frappe ou une sommation. :-) –