Functionen varübergabe

Hallo,

ich stehe gerade etwas aufm schlauch…

Ich hab eine function an die ich eine variable übergebe.

function blub($wert) {
 echo $wert;
}

$daten = "X";
blub($daten);
var\_dump($daten);

habe ich irgendeine möglichkeit in der Funktion herauszufinden wir die variable vor der übergabe hies?

ich würde gern die variable die an blub() übergeben würde in blub löschen.

heißt das var_dump($daten) müsste null sein.

Gruß
Phillip

habe ich irgendeine möglichkeit in der Funktion herauszufinden
wir die variable vor der übergabe hies?

ich würde gern die variable die an blub() übergeben würde in
blub löschen.

also der name der variable hat damit herzlich wenig zu tun.
du musst die variable als referenz übergeben und die funktion so
deklarieren, wie es hier:
http://de2.php.net/manual/de/functions.arguments.php…
beschrieben ist.

naja aber ich kann die var über die referenz nicht löschen.

http://de2.php.net/manual/de/function.unset.php

das geht in der funktion nur mit unset($GLOBALS[‚varname‘]);

und dafür brauche ich den namen wie die var außerhalb der funktion heißt.

Gruß
Phillip

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich denke, das das, was du machen moechtest, ziemlich unsauber ist.
Warum rufst du die Funktion nicht einfach auf und fuehrst
anschliessend ein unset() auf die Variable aus?

blubb($daten);
unset($daten);

Wenn du mit Referenzen arbeitest kannst du die Variable auch
auf false setzen. Dann ist diese zwar nicht geloescht, aber es
ist kein brauchbarer Inhalt mehr vorhanden und if-abfragen
ergeben auch ein negatives Resultat.

function blubb(&$data) {
echo $data;
$data = false;
}

$test = ‚test halt‘;
blubb($test);
if ( $test ) {
echo ‚das sollte eigentlich nicht mehr auftauchen‘;
}

Statt false kannst du auch NULL verwenden, dann wird sie ‚Genullt‘, allerdings auch nicht geloescht.

Alternativ kannst du an die Funktion auch den Namen der
Variable uebergeben und dann dynamisch auf diese Variable
zugreifen - aber wie gesagt sauberer Programmierstil ist das
nicht:

function blubb($data, $varname) {
echo $data;
unset( $_GLOBALS[$varname] );
}

$test = ‚test halt‘;
blubb($test, ‚test‘);

Eine passendere Loesung kann ich dir ohne kenntniss des
Zweckes bzw. des weiteren Codes nicht anbieten.

Bye
Stefan

Hallo,

du musst die variable als referenz übergeben und die funktion
so
deklarieren, wie es hier:
http://de2.php.net/manual/de/functions.arguments.php…
beschrieben ist.

naja aber ich kann die var über die referenz nicht löschen.

http://de2.php.net/manual/de/function.unset.php

das geht in der funktion nur mit unset($GLOBALS[‚varname‘]);

und dafür brauche ich den namen wie die var außerhalb der
funktion heißt.

Setze die referenzierte Variable auf den Wert NULL. Das entspricht
einem unset().
s. http://de.php.net/manual/de/language.types.null.php#…

Gruss
Thomas

Eine passendere Loesung kann ich dir ohne kenntniss des
Zweckes bzw. des weiteren Codes nicht anbieten.

Der Zweck ist relativ einfach.
Ich hab eine Klasse zum erstellen einer importdatei in die ich objekte übergebe.

die Klasse soll wenn sie fertig ist aber nicht nur von mir sondern auch von anderen kollegen genutzt werden.

$object->x = „A“;
$object->y = „B“;

$test->machewas($object);

nun geht es aber weiter, $object muss jetzt aber leer sein da es sonst zu problemen kommen kann wenn die nächste function mit gleichen parametern aufgerufen wird.

da ich nicht glaube das jeder kollege an ein unset($object) denkt würde ich das halt gerne vorher erledigen.

aber mit Referenz = null sollte das klappen.

Gruß
Phillip