Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekazanie zmiennej do funkcji
Forum PHP.pl > Forum > Przedszkole
arkos
Witam,

Napisałem sobie taką funkcję, która działa prawidłowo:
  1. function array_map_recursive(&$arr){
  2. array_walk_recursive($arr, function(&$val){ $val = call_user_func('strtoupper', $val); });
  3. }


Chciałbym, natomiast abym mógł określić jaka funkcja ma się wykonać na danej tablicy w argumencie (zamiast: strtoupper).
Nie mam już pomysłu jak mogę otrzymać zawartość zmiennej $fnc, w funkcji array_walk_recursive.
Funkcja poniżej oczywiście zwraca błąd, napisałem ją aby bardziej zobrazować o co mi chodzi.
  1. function array_map_recursive(&$arr, $fnc){
  2. array_walk_recursive($arr, function(&$val, &$fnc){ $val = call_user_func($fnc, $val); });
  3. }

Próbowałem również tak:
  1. function array_map_recursive(&$arr, $fnc){
  2. $test = $fnc;
  3. array_walk_recursive($arr, function(&$val){ global $test; $val = call_user_func($test, $val); });
  4. }
Pyton_000
Jako 3 parametr
arkos
Cytat(Pyton_000 @ 7.05.2014, 23:39:17 ) *
Jako 3 parametr

Co masz na myśli?

Nie chcę pisać kilku osobnych funkcji całych typu:
  1.  
  2. function arrayMapRecursive_stripslashes(&$arr){
  3. array_walk_recursive($arr, function(&$val){ $val = stripslashes($val); });
  4. }
  5.  
  6. function arrayMapRecursive_strtoupper(&$arr){
  7. array_walk_recursive($arr, function(&$val){ $val = strtoupper($val); });
  8. }
  9.  
  10. function arrayMapRecursive_trim(&$arr){
  11. array_walk_recursive($arr, function(&$val){ $val = trim($val); });
  12. }


Tylko po prostu napisać jedną i w niej podać co na danej tablicy wykonywać: stripslashes, strtoupper, czy trim.
Pyton_000
  1. function array_map_recursive(&$arr, $funct = 'strtoupper'){
  2.  
  3. array_walk_recursive($arr, function(&$val, $key, $functIn){ $val = call_user_func($functIn, $val); }, $funct);
  4.  
  5. }
Tuminure
Lub używając "variable functions".

  1. function array_map_recursive(&$arr, $funct = 'strtoupper'){
  2. array_walk_recursive($arr, function(&$val, $key, $funct){ $val = $funct($val); }, $funct );
  3. }
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.