Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Argumenty funkcji z tablicy
Forum PHP.pl > Forum > Przedszkole
...
Witam, mam pewien problem. Chciałbym wykonać funkcję której argumentami są elementy tablicy.
  1. <?php
  2. $argumenty = Array("argument1", "argument2", "argument3", (...));
  3.  
  4. function f($arg1, $arg2, $arg3, (...) ){}
  5. ?>

Wiem, że mogę podać 1 parametr który jest tablicą, ale nie o to mi chodzi. Zapewne odpowiedź jest bardzo prosta, ale nie mogłem na nią wpaść od rana ;D

Do czego mi to? Ucze się pisać obiektowo i tworze taki mały framework. Problem jest taki że nie wiem ile zostanie dodanych argumentów w tablicy, a pętla nie bardzo tu pasuje. Dodatkowo nie chcę używać func_get_args() lub &.
Wiem, że jest to rozwiązane np w frameworku CodeIgniter (parametry akcji w kontrolerach)
Mlodycompany
mozesz zrobic tak ze w tablicy masz argumenty, tworzysz sobie funkcje np
  1. <?php
  2. function wyswietl($arg){
  3. echo $arg;
  4. }
  5. ?>

a potem petle
  1. <?php
  2. foreach($tablica as $arg){
  3. wyswietl($arg);
  4. }
  5. ?>
...
Cytat(Mlodycompany @ 3.07.2008, 00:10:16 ) *
mozesz zrobic tak ze w tablicy masz argumenty, tworzysz sobie funkcje np
  1. <?php
  2. function wyswietl($arg){
  3. echo $arg;
  4. }
  5. ?>

a potem petle
  1. <?php
  2. foreach($tablica as $arg){
  3. wyswietl($arg);
  4. }
  5. ?>

Wiem że tak można. Problem jest taki że wywoła to funkcję tyle razy ile jest argumentów, a tego bym nie chciał. Chce po prostu wywołać raz funkcję z parametrami z tablicy.
Mlodycompany
hmm ale chyba nie ma roznicy czy wywolasz funkcje z kilkoma argumentami od wywolania kilku funkcji z jednym argumentem
mls
Cytat(... @ 3.07.2008, 00:07:32 ) *
Witam, mam pewien problem. Chciałbym wykonać funkcję której argumentami są elementy tablicy.
  1. <?php
  2. $argumenty = Array("argument1", "argument2", "argument3", (...));
  3.  
  4. function f($arg1, $arg2, $arg3, (...) ){}
  5. ?>

Wiem, że mogę podać 1 parametr który jest tablicą, ale nie o to mi chodzi. Zapewne odpowiedź jest bardzo prosta, ale nie mogłem na nią wpaść od rana ;D


  1. <?php
  2. $argumenty = array('argument1', 'argument2', 'argument3');
  3. call_user_func_array('jakasfunkcja', $argumenty);
  4.  
  5. function jakasfunkcja ()
  6. {
  7. $argumenty = func_get_args()
  8. print_r($argumenty);
  9. }
  10. ?>
...
Cytat(mls @ 3.07.2008, 00:59:06 ) *
  1. <?php
  2. $argumenty = array('argument1', 'argument2', 'argument3');
  3. call_user_func_array('jakasfunkcja', $argumenty);
  4.  
  5. function jakasfunkcja ()
  6. {
  7. $argumenty = func_get_args()
  8. print_r($argumenty);
  9. }
  10. ?>

Dzięki. O to mi chodziło. O funkcję call_user_func_array(). Dziwne, że jej w manualu nie znalazłem...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.