Hier ist der Code zuerst:php variable Umfang quetion
<?php
$test = 'nothing';
function check_test(){
global $test;
echo 'The test is '.$test.'\n';
}
function run($lala){
$test = $lala;
check_test();
}
check_test();
run('Test 2');
run('Test 3');
check_test();
AFAIK in Python würde es funktionieren, weil es Variablen oberen Rahmen sucht, aber sieht aus wie es anders in PHP funktioniert. So, hier ist die Frage: Wie kann ich dieses Verhalten erreichen - so Funktion wird erste Variable Vorkommen verwenden und wird nicht von der höheren Scope-Ebene zu suchen. In diesem Beispiel wollte ich ausgegeben werden.
The test is nothing
The test is Test 2
The test is Test 3
The test is nothing
bekam aber nur
The test is nothing
für 4 mal.
Bedeutet, dass die allererste Variablendeklaration verwendet wurde. Viel zu schätzen mit irgendwelchen Vorschlägen dazu!
Dies ist kein Duplikat, ich verstehe die Konzeption des Umfangs, ich bin gefragt, ob es möglich ist, bestimmtes Verhalten in diesem Ausschnitt zu erreichen.
UPD: Ich kann keine vorgeschlagenen Methoden verwenden, weil wir Pthreads verwenden und jede Funktion wird in der gleichen Zeit ausgeführt werden und globale Variable wird jede Sekunde geändert werden, und das ist nicht was ich will. Stattdessen brauche ich, dass jeder Thread seine eigene "lokale" globale Testvariable verwendet.
Sie ändern nicht wirklich den globalen Testwert in Ihrer 'run' Funktion. Sie ändern den Wert, der in dieser Funktion sichtbar ist – Thamilan
Mögliches Duplikat von [Reference: Was ist der Variablenbereich, auf welche Variablen kann von wo zugegriffen werden und was sind "undefinierte Variable" Fehler?] (Http: // stackoverflow.com/questions/16959576/reference-was-is-variable-scope-welche-variablen-sind-zugänglich-von-wo-und) – dimlucas
@ Das ist, was ich wollte. Also wird jede Funktion ihre nächste $ test Variable als global verwenden. – user3416803