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