Funktion mit einer umbestimmten Anzahl von Parametern

aKraus

Erfahrenes Mitglied
Hi,
Ich würde gerne eine Function mit einer umbestimmen Anzahl an Parametern schreiben.
Ich weiss zwar, dass man die function so deklariert:
PHP:
 int printf (string format [, mixed args...])
Allerdings hab ich keinen plan, wie ich (in diesem fall) args abfangen soll und ob ich evtl. ein Array bekomme?
Mit welcher Funktion würdet ihr Arbeiten, wenn ich jeweils das erste vorkommen eines bestimmten strings (z.B. "%d") im als Parameter übergebenen String zu ersetzen?

PHP:
$tmp_array = explode("%d",$format); 
$tmp_string = "";
 
for($x=0;$x<count($array);$x++){
  $tmp_string  = $tmp_string."".$array[$x]."".args[$x];  //angenommen ich würde den (die) Parameter als Array bekommen...
}

Ich hoffe, jemand kann mir helfen :)

So Long
 
du kannst einfach für die nicht "obligatorischen" Parameter einen Standartwert setzen:

PHP:
function blabla($param1, $param2 = "foo", $param3 = "bar") {
  		// $param2 und $param3 müssen nicht notwendig übergeben werden
  	}
 
Code:
<?

$variable = array(1,2,3,4,5,6,7,8,9);



$typ = gettype($variable);

echo $typ;
echo "<br>";


if($typ == "array")
{

foreach($variable as $element)
{
echo $element;
echo "<br>";
} 

}
else
{

echo $variable;

}

?>

So wird, je nach Varialbentyp, entweder eine foreach-Schliefe gestartet, oder die Varialbe mit echo ausgegeben!
 
@ maesi:
du kannst einfach für die nicht "obligatorischen" Parameter einen Standartwert setzen


Ich will auch keinen Standardwert setzen...
Ich will lediglich einen String als 1. Parameter übergeben und eine umbestimmte Zahl anderer Parameter und diese an einer bestimmten Stelle des als 1. Parameter übergebenen Strings zurückgeben. Ähnlich wie die printf funktion NUR will ich den String dann der Funktion zurückgeben und nicht ausgeben...

@ eliasb
Ich Programmiere seit knapp 2 Jahren beruflich C++
Mir sind foreach Schleifen bekannt.

Meine Frage besteht lediglich darin, wie ich mit den (die) Parameter mit umbestimmter Anzahl arbeite. Ob ich die evtl. als Array bekomme und was ich alles zu beachten haben...


Es ist zwar schön, dass ihr auf diesen Thread antwortet, aber bitte findet nichts dazu (maesi) und überlest die hälfte (eliasb)

Greatz
 
Zuletzt bearbeitet:
Dann vielleicht so?

<?

$variable = array(1,2,3,4,5,6,7,8,9);



$typ = gettype($variable);

echo $typ;
echo "<br>";


if($typ == "array")
{

foreach($variable as $element)
{
$element = str_replace("%d","d",$variable);

// oder:
$muster = "/\%d/";
$variable = preg_replace($muster,"d",$variable);


echo $element;
echo "<br>";
}

}
else
{
$variable = str_replace("%d","d",$variable);

echo $variable;

}

?>
 
eliasb:
Mir geht es eher weniger um das Handhaben verschiedener typen der Übergabeparametern mit umbestimmter Anzahl.

Mir geht es darum, wie ich mit den Übergabe Parametern arbeite.
Auf Deutsch:

Wie ich im Quellcode das mit der umbestimmten Anzahl umgehe...
Ob ich diese Parameter als EIN Array bekomme wie ich sonst mit ihnen Arbeiten muss...

Teste mal die Funktion printf und du wirst verstehen was ich meine
 
Kannst Du Dein Problem mal ein wenig besser beschreiben?
Vielleicht wird dann deutlicher, was Du brauchst, ...
Einer Function eine unbestimmte Anzahl von Parametern zu übergeben, würde ich auch mit einem Array lösen.
Aber vielleicht habe ich Dich auch falsch verstanden!?

redlama
 
Hi,

Hintergrund ist (wie hier oft gebraucht) MLS (Multi Language Support).
Ich hab Strings, die die evtl. Parameter haben können.

PHP:
 "%breite x %hoehe (Breite x Höhe)"

jetzt will ich eine Funktion aufrufen, welche mit für diesen String (1. Parameter) jeweils die %strings mit einem Übergabewert ersetzt

PHP:
$string =  "%breite x %hoehe (Breite x Höhe)" 
$tmpString = myfunc($string, "%breite", 10, "%hoehe", 20);

Ein bekannter hat mir bereits geschilder, dass ich folgende Funktionen verwenden soll:
http://de.php.net/manual/de/function.func-get-args.php
http://de.php.net/manual/de/function.func-num-args.php
http://de.php.net/manual/de/function.func-get-arg.php

Gemacht, getan.
Funktioniert einwandfrei!

Leider konnte mir hier keiner die "richtige" Lösung sagen.

P.S.
hab mir auch die printf(); function von PHP etwas genauer unter die Lupe genommen :)

So Long
 
Zurück