Modification d'une variable globale à partir D'une fonction PHP

J'essaie de changer une variable qui est en dehors d'une fonction, à partir d'une fonction. Parce que si la date que la fonction vérifie est supérieure à un certain montant, j'en ai besoin pour changer l'année pour la date au début du code.

$var = "01-01-10";
function checkdate(){
     if("Condition"){
            $var = "01-01-11";
      }
}
33
demandé sur Chris Bier 2010-11-08 23:31:39

4 réponses

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);
43
répondu Alin Purcaru 2010-11-08 20:37:04

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.

44
répondu Buggabill 2010-11-08 20:33:05

Toutes les réponses ici sont bonnes, mais... êtes-vous sûr de vouloir faire cela?

Changer les variables globales à partir des fonctions est généralement une mauvaise idée, car cela peut très facilement provoquer l'apparition de code spaghetti, dans lequel les variables sont modifiées dans tout le système, les fonctions sont interdépendantes les unes des autres, etc. C'est un véritable gâchis.

Permettez-moi de suggérer quelques alternatives:

1) programmation orientée Objet

2) ayant la fonction retourner une valeur, qui est affecté par l'appelant.

Par exemple $var = checkdate();

3) Ayant la valeur stockée dans un tableau qui est passé dans la fonction par référence

Fonction checkdate (&$valeurs) { si (condition) { $valeurs["date"] = "01-01-11"; } }

J'espère que cela aide.

8
répondu Douglas Muth 2010-11-08 20:41:23

Essayez ce passage par référence

  $var = "01-01-10";
    function checkdate(&$funcVar){  
        if("Condition"){
            $funcVar = "01-01-11";
        }
    }
    checkdate($var);

Ou essayez ceci comme ci-dessus, en gardant la fonction identique.

 $var = "01-01-10";
    function checkdate($funcVar){  
        if("Condition"){
            $funcVar = "01-01-11";
        }
    }
    checkdate(&$var);
5
répondu rizon 2013-01-21 01:08:13