Autor Zpráva
host
Profil *
Zdravím,
chci se zeptat jestli je možné mít funkci s libovolným počtem parametrů a poté je nějak všechny získat?
Nevím jestli je to srozumitelné, tak dám teoretický příklad:

function funkce() {
 $tmp = '';
 // zde získat všechny vstupující parametry a dát je za sebe třeba nějak takto:
 foreach($vstupni_parametry as $value)
  $tmp .= $value.',';
}


echo funkce('první', 'druhý', 'třetí', ... , 'desátý'); // vypíše "první,druhý,třetí,čtvrtý,...desátý,"
echo funkce('první', 'druhý'); // vypíše pouze "první, druhý," 


Je tohle možné?
Joker
Profil
A co jí ty parametry předávat jako pole?
host
Profil *
To už mě taky napadlo, ale tohle mi přijde "jednodušší" pro používání. Takhle by člověk přišel a jenom tam dal
echo funkce(1,2,3,4,5,6);

a nemusel by pamatovat na to že musí psát
$array = Array(1,2,3,4,5,6);
echo $funkce($array);


Pokud by to nešlo tak, jak jsem si to namyslel tak bych to tak určitě udělal.
Joker
Profil
Já myslím, že nějak jde i ten proměnný počet parametrů, jenom teď nevím jak, protože jsem to nikdy v životě nepoužil.
Joker
Profil
Ha, tak Google -> myslím, že by to šlo s pomocí func_num_args a func_get_arg nebo func_get_args

Asi takhle:
function foo(){
  $pocet = func_num_args();
  for($i=0; $i<$pocet; $i++){
    echo("$i. argument:".func_get_arg($i));
  }
}
host
Profil *
To je přesně ono! Mockrát díky :)
Já jsem to taky zkoušel Gůglit, jenže jsem nevěděl jak to správně pojmenovat a nic rozumného jsem nenašel.
kajaman
Profil
parametry můžeš od konce vynechávat:

function foo($par1 = 'a', $par2 = 'b') 
{
    echo $par1 . $par2;
}

foo(); // ab
foo('c'); //cb
foo('c','d'); //cd
Kajman_
Profil *
kajaman
Ale to už není funkce s libovolným počtem, ale s počtem menším nebo rovnou nějakému čislu (v příkladu 2).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: