[PHP] Variable aus Funktion global machen

NagathoR

Well-known member
ID: 16699
L
22 Februar 2007
45
2
Folgendes Problem:

PHP:
$fields = array("field1"=>"Wert1","field2"=>"Wert2");


function vars($fields){
reset($fields);
while(list($key,$value) = each($fields)){
global $$key;
}
}

vars($fields);
echo $field1 gibt leider nichts aus

Geht leider nicht, wie gehts richtig?
 
probier das mal (ungetestet)

PHP:
$fields =  array("field1" => "Wert1", "field2" => "Wert2");

function vars($fields)
{
foreach($fields AS $key => $value)
{
GLOBAL $key;
}
}

vars($fields);
 
echo $field1 gibt leider nichts aus

Richtig. Und was folgern wir daraus? $field1 ist gesetzt; ansonsten käme eine Notice. Du musst auch den Wert zuweisen.

Ansonsten weiß ich nicht, was man mit globalen Variablen will. Was ist denn dein konkretes Problem? Da gibt es zu 99% einen schöneren Lösungsansatz.

edit: etwas zu langsam
 
Geht leider auch nicht.
Anbei mal meine Funktion:

PHP:
function vars_post($array=null,$f=false){
	if (is_array($array) && count($array)>0) {
		if (is_string($fields)) {
			$fields = array("$f");
		}else{
			$fields = $f;
		}
		if ($f) {
			reset($array);
			while(list($var,$value) = each($array)){
				if (is_array($fields) && (in_array($var,$fields) || ($fields[$var] != NULL && $fields[$var] != ""))) {
					$var = $value;
					global $$var;
				}
			}
			return true;
		}

	}
	return false;
}