Hello Jens,
wie kann ich eine Variable nur dann in eine Funktion einbinden, wenn sie gesetzt ist?
function xyz ($var1, $nurwenngesetzt, $var2)
{
//funktionsaufgaben
}
So, wie Du das zeigst in deinem Beispiel, ist es nicht möglich, da so die Funktionsargumente an ihre Position gebunden sind. PHP gibt aber die Möglichkeit, Funktionsargumente bei der Deklaration der Funktion vorzubelegen. Allerdings ist es dann unpraktisch, wenn noch weitere Argumente folgen, die man ebenfalls benötigt. Man muss immer alle Funktionsargumente bis zum letzten benötigten (abweichend von der Vorbelegung) explizit übergeben beim Funktionsaufruf.
PHP ist aber eine Interpretersprache und daher lässt es, wie fast alle Interpretersprachen, auch die Übergabe von Werten per Namen, also nicht per Position zu. Hierzu kannst Du in PHP einfach ein Array benutzen.
Der Nachteil ist, dass man für das Setzen der Elemente im Array einen extra Verarbeitungsschritt benötigt, also nicht inline arbeiten kann.
Dies als Beispiel:
~~~php
$_argumente['name']='vom Berg';
$_argumente['vorname']='Tom';
$_argumente['alter']='geht gerade noch so';
function xyz ($_argumente)
{
if (!is_array($_argumente)) return false;
$ret = "<ul>\r\n";
foreach ($_argumente as $key => $val)
{
$ret .= " <li><strong>" . htmlspecialchars(ucfirst($key)) .
": </strong>" . htmlspecialchars($val) .
"</li>\r\n";
}
$ret .= "</ul>\r\n";
return $ret;
}
echo xyz($_argumente);
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg