johny7: Originalvariable wird mit geändert

Beitrag lesen

Moin allerseits,

ich habe meine Funktion jetzt etwas ergänzt. Die sieht jetzt folgendermaßen aus:

  
//	Ersetzt 0-Werte durch einen Dummy, bearbeitet auch Arrays und Objekte; in $onlythis werden die indizes gespeichert, die ausschließlich bearbeitet werden  
function zero2dummy($var,$dummy='--',$onlythis=false)  
	{  
	$return = $var;  
	if (is_array($return) || is_object($return))  
		{  
		foreach ($return as $key=>$val)  
			{  
			if ($onlythis && !in_array($key,$onlythis)) continue 1;  
			  
			if (is_array($return)) $return[$key] = zero2dummy($val,$dummy);  
			else $return->$key = zero2dummy($val,$dummy);  
			}  
		return $return;  
		}  
	else  
		{  
		$return = intval($return);  
		return ($return == 0) ? $dummy : $return;  
		}  
	}  

Wenn ich jetzt folgenden Aufruf durchführe:

  
echo print_r($array1,1).'<br />';  
$kopie = zero2dummy($array1,'--',array('geburtstag','eintrittsdatum','austrittsdatum'));  
echo print_r($array1,1).'<br />';  
echo print_r($kopie,1);  

ist bei mir die zweite und dritte Ausgabe identisch. D.h., wenn ich einmal die Variable $array1 in der Funktion verwende, wird nicht bloß ein anderer Wert an die Variable davor zugewiesen, sondern der Original-Array wird auch verändert. Warum?
Ich habe extra in der Funktion eine Kopie von der Eingehenden Variable angefertigt...

Grüße, JN

--
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de