Funktions Parameter
Xynon
- php
Hallo,
ich habe mal eine Frage:
Wie kann man bei PHP eine Funktion schreiben die beliebig viele Parameter erfasst?
Also so wie bei z.B. array_push
Danke schon mal im vorraus!
mfg Xynon
Hello,
Wie kann man bei PHP eine Funktion schreiben die beliebig viele Parameter erfasst?
Also so wie bei z.B. array_push
siehe http://de.php.net/manual/de/function.func-get-args.php
und http://de.php.net/manual/de/function.func-num-args.php
usw.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Danke,
das ist genau das was ich brauchte, ich wusste nur nicht wonach ich suchen sollte.
mfg Xynon
Moin allerseits,
siehe http://de.php.net/manual/de/function.func-get-args.php
und http://de.php.net/manual/de/function.func-num-args.php
Das ist aber ziemlich allgemein erklärt. Gibt es irgenwo eine ausführlichere Erklärung mit mehr als nur einem Beispiel? a la self?
Oder hat irgendjemand Lust, das hier ein wenig aus zu führen?
Grüße, JN
echo $begrüßung;
» siehe http://de.php.net/manual/de/function.func-get-args.php
» und http://de.php.net/manual/de/function.func-num-args.php
Das ist aber ziemlich allgemein erklärt. Gibt es irgenwo eine ausführlichere Erklärung mit mehr als nur einem Beispiel? a la self?
Oder hat irgendjemand Lust, das hier ein wenig aus zu führen?
Was genau verstehst du nicht? Egal ob und wieviele Parameter für eine Funktion deklariert sind, func_num_args() liefert ihre Anzahl und func_get_args() ein Array mit den Werten sowie func_get_arg ein einzelnen Wert anhand der Position.
echo "$verabschiedung $name";
Moin allerseits,
Was genau verstehst du nicht? Egal ob und wieviele Parameter für eine Funktion deklariert sind, func_num_args() liefert ihre Anzahl und func_get_args() ein Array mit den Werten sowie func_get_arg ein einzelnen Wert anhand der Position.
D.h. ich kann eine Funktion deklarieren ohne Parameter an zu geben und sie dann mit beliebig vielen Parametern aufrufen? Kann ich auch eine Kombination machen, z.B.
<?php
function mytest($arg1,$arg2,$arg3="1",$arg4="foo")
{
...
}
mytest(1,2,3,4,5,6,7);
?>
Grüße, JN
echo $begrüßung;
» Egal ob und wieviele Parameter für eine Funktion deklariert sind, func_num_args() liefert ihre Anzahl [...]
besser gesagt: die Anzahl der aktuell übergebenen Werte.
D.h. ich kann eine Funktion deklarieren ohne Parameter an zu geben und sie dann mit beliebig vielen Parametern aufrufen? Kann ich auch eine Kombination machen, z.B.
Ja. Ja. Die ersten paar Parameterwerte kannst du über die Parameter-Variablen ansprechen. Und mit den genannten Funktionen kannst du alle ansprechen, also zusätzlich auch noch die Extra-Werte.
echo "$verabschiedung $name";
Hallo,
hätte allerdings noch eine Frage:
Warum kann array_push nichts an ein array von einer Klasse anhängen?
class beispiel
{
private $array = array();
public function add($item)
{
array_push($this->array,$item);
}
}
$test = new beispiel();
$test->add("test");
Ergebnis ist:
Warning: array_push() [function.array-push]: First argument should be an array in ...
Danke schon mal im vorraus!
mfg Xynon
Hello,
Warum kann array_push nichts an ein array von einer Klasse anhängen?
class beispiel
{
private $array = array();
public function add($item)
{
array_push($this->array,$item);
}
}$test = new beispiel();
$test->add("test");
>
> Ergebnis ist:
> Warning: array\_push() [function.array-push]: First argument should be an array in ...
Es funktioniert, wenn man keine Namen benutzt, die reserviert sind.
<?php ### array\_push.php ###
class beispiel
{
private $\_namen = array();
public function add($item)
{
array\_push($this->\_namen, $item);
}
public function show()
{
echo "<pre>\r\n";
echo htmlentities(print\_r($this->\_namen,1));
echo "</pre>\r\n";
}
}
$test = new beispiel();
$test->add("test");
$test->show();
?>
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
Achja, der Unterstrich, (kommt davon wenn schon ewig nicht mehr mit PHP gearbeitet hat)
Danke für den Hinweis!
mfg Xynon
Hello,
Achja, der Unterstrich, (kommt davon wenn schon ewig nicht mehr mit PHP gearbeitet hat)
Nein, der Unterstrich ist nur meine persönliche Kennzeichnung für Arrays...
Aber Du hast als Element-Bezeichner für das Klassenelement 'array' benutzt und das ist ein Schlüsselwort.
$this->array
ist daher (noch) ein Problem für PHP.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
Nein, der Unterstrich ist nur meine persönliche Kennzeichnung für Arrays...
Aber Du hast als Element-Bezeichner für das Klassenelement 'array' benutzt und das ist ein Schlüsselwort.
$this->array
Dann versteh ich nicht denn das war nur ein Bsp.
in meiner richtigen Klasse nutze ich nämlich die Variable
$do_nothing_list = array();
und das ging nicht, jetzt mit $_do_nothing_list
geht es?!
Hi Xynon!
Bei mir funktioniert dein Beispiel problemlos unter Windows mit PHP 5.2.9.
Die Ausgabe mittels var_dump:
object(beispiel)#1 (1) {
["array:private"]=>
array(1) {
[0]=>
string(4) "test"
}
}
Welche PHP-Version nutzt du?
MfG H☼psel
Hallo,
Welche PHP-Version nutzt du?
Auch 5.2.9