webentwicklung-frage-antwort-db.com.de

Ändern einer globalen Variablen innerhalb einer Funktion PHP

Ich versuche, eine Variable, die sich außerhalb einer Funktion befindet, innerhalb einer Funktion zu ändern. Wenn das Datum, an dem die Funktion prüft, einen bestimmten Wert überschreitet, muss das Jahr für das Datum am Anfang des Codes geändert werden.

$var = "01-01-10";
function checkdate(){
     if("Condition"){
            $var = "01-01-11";
      }
}
37
Chris Bier

A. Verwenden Sie das Schlüsselwort global , um Daten aus dem Anwendungsbereich zu importieren.

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

B. Verwenden Sie das Array $ GLOBALS .

$var = "01-01-10";
function checkdate(){
    if("Condition"){
        $GLOBALS['var'] = "01-01-11";
    }
}
checkdate();

C. Übergeben Sie die Variable als Referenz .

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

Verwenden Sie einfach das Schlüsselwort global wie folgt:

$var = "01-01-10";
function checkdate(){
     global $var;

     if("Condition"){
            $var = "01-01-11";
      }
}

Jeder Verweis auf diese Variable bezieht sich dann auf die globale Variable.

44
Buggabill

Alle Antworten hier sind gut, aber ... sind Sie sicher, dass Sie dies tun möchten?

Das Ändern globaler Variablen aus Funktionen heraus ist im Allgemeinen eine schlechte Idee, da es sehr leicht zu Spaghetti-Code kommen kann, bei dem Variablen im gesamten System geändert werden, Funktionen voneinander abhängig sind usw. Es ist ein echtes Durcheinander.

Bitte erlauben Sie mir einige Alternativen vorzuschlagen:

1) Objektorientierte Programmierung

2) Die Funktion einen Wert zurückgeben lassen, der vom Aufrufer zugewiesen wird.

z.B. $ var = checkdate();

3) Speichern des Werts in einem Array, das als Referenz an die Funktion übergeben wird

funktionsprüfdatum (& $ Werte) {if (Bedingung) {$ Werte ["Datum"] = "01-01-11"; }}

Hoffe das hilft.

8
Douglas Muth

Versuchen Sie diesen Pass als Referenz

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

oder Versuchen Sie dies genauso wie oben, und behalten Sie dabei die gleiche Funktion bei.

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