J'essaye de changer une variable qui est en dehors d'une fonction, de l'intérieur d'une fonction. Parce que si la date que la fonction vérifie dépasse un certain montant, j'en ai besoin pour changer l'année de la date au début du code.
$var = "01-01-10";
function checkdate(){
if("Condition"){
$var = "01-01-11";
}
}
A. Utilisez le mot clé global pour importer à partir de la portée de l'application.
$var = "01-01-10";
function checkdate(){
global $var;
if("Condition"){
$var = "01-01-11";
}
}
checkdate();
B. Utilisez le tableau $ GLOBALS .
$var = "01-01-10";
function checkdate(){
if("Condition"){
$GLOBALS['var'] = "01-01-11";
}
}
checkdate();
C. Passez la variable par référence .
$var = "01-01-10";
function checkdate(&$funcVar){
if("Condition"){
$funcVar = "01-01-11";
}
}
checkdate($var);
Utilisez simplement le mot clé global
comme ceci:
$var = "01-01-10";
function checkdate(){
global $var;
if("Condition"){
$var = "01-01-11";
}
}
Toute référence à cette variable sera alors à la variable globale.
Toutes les réponses ici sont bonnes, mais ... êtes-vous sûr de vouloir faire cela?
Changer des variables globales à partir de fonctions est généralement une mauvaise idée, car cela peut très facilement provoquer le code spaghetti, où les variables sont modifiées dans tout le système, les fonctions sont interdépendantes, etc. C'est un vrai gâchis.
Veuillez me permettre de suggérer quelques alternatives:
1) Programmation orientée objet
2) La fonction renvoie une valeur qui est attribuée par l'appelant.
par exemple. $ var = checkdate();
3) Avoir la valeur stockée dans un tableau qui est passé dans la fonction par référence
fonction checkdate (& $ values) {if (condition) {$ values ["date"] = "01-01-11"; }}
J'espère que cela t'aides.
Essayez ce pass par référence
$var = "01-01-10";
function checkdate(&$funcVar){
if("Condition"){
$funcVar = "01-01-11";
}
}
checkdate($var);
ou Essayez la même chose que ci-dessus, en gardant la fonction identique.
$var = "01-01-10";
function checkdate($funcVar){
if("Condition"){
$funcVar = "01-01-11";
}
}
checkdate(&$var);