Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP - Jak nastavit funkci když neznám počet parametrů

Ahoj,
mám funkci a potřebuji ji předávat různý počet parametrů ale nevím, jak nastavit ten vstup do té funkce (parametry jsou string). Neporadí někdo ?
Zkoušel jsem to takto ale je to docela prasárna :(

moje_funkce($p1=null,$p2=null,$p3=null,$p4=null,$p5=null,$p6=null,$p7=null,$p8=null,$p9=null,$p10=null,$p11=null,$p12=null,$p13=null,$p14=null)
{
..
}

Díky

Předmět Autor Datum
A předat ty stringy jako pole?
host 17.07.2016 23:08
host
Ne, musí zůstat strings.. :-(
MM10 17.07.2016 23:17
MM10
Universálně můžeš použít vestavěnou func_num_args() a func_get_arg() <?php function moje_funkce() {…
Flash_Gordon 17.07.2016 23:19
Flash_Gordon
Díky, funguje to, akorát nechápu, že to neřve, že nesedí počet parametrů .. V nových verzích PHP lz…
MM10 17.07.2016 23:28
MM10
V PHP 5.6 a vyšším jde zapsat např.: Pro výpočet sumy číselných argumentů: <?php function suma_cis…
Flash_Gordon 17.07.2016 23:40
Flash_Gordon
Jako, že vložím jako parametr do dané funkce nějakou jednu proměnnou a před ni napíši tři tečky ? Pa…
MM10 17.07.2016 23:48
MM10
Asi máš na mysli něco takového: for ( $i = 0 ; $i < func_num_args(); $i=$i+2 ) poslední
Flash_Gordon 18.07.2016 06:55
Flash_Gordon

Universálně můžeš použít vestavěnou func_num_args() a func_get_arg()

<?php
  function moje_funkce() {
      echo "Number of arguments: " . func_num_args() . "<br />";  // Vrací počet argumentů
      for($i = 0 ; $i < func_num_args(); $i++) {                  // Tělo projede argumenty
          echo "Argument $i = " . func_get_arg($i) . "<br />";   
      }
  }

  moje_funkce("a", "b", "c", "d", "e"); // zavoláme určitý počet argumentů (nevíme přesně kolik)
?>

V nových verzích PHP lze používat i jednodušeji zapsané vychytávky.

V PHP 5.6 a vyšším jde zapsat např.:

Pro výpočet sumy číselných argumentů:

<?php
function suma_cisel(...$cisla) {
    $acc = 0;
    foreach ($cisla as $c) {
        $acc += $c;
    }
    return $acc;
}

echo suma_cisel(1, 2, 3, 4);
?>

Pro řetězce nějak takto:

<?php
function tiskni(...$argumenty) {
    
    foreach ($argumenty as $argument) {
        echo $argument . "<BR>";
    }
    
}

echo tiskni("a", "b", "c", "d");
?>

Jako, že vložím jako parametr do dané funkce nějakou jednu proměnnou a před ni napíši tři tečky ?
Patrně tomu rozumíš, můžeš mi prosím poradit s tím cyklem ? Potřebuji na čítat pouze sudá čísla, čili když bude 10 parametrů, potřebuji vypsat jen parametry 0,2,4,6,8.

zkoušel jsem to takto ale cyklí se to :-(

for ( $i = 0 ; $i < func_num_args(); $i+2 )

Zpět do poradny Odpovědět na původní otázku Nahoru