2013-03-30 2 views
0

Clairement c'est vraiment un mauvais code, mais je ne peux pas penser à l'améliorer. La fonction 'test' ne peut pas être modifiée du tout, mais tout le reste le peut.Mauvais code PHP. S'il vous plaît aider à améliorer

Je souhaite transmettre un tableau de valeurs à une fonction qui actionne la fonction de test. L'élément clé est que je dois utiliser toutes les valeurs de variables de fonction prédéfinies dans la fonction de test sans les redéclarer.

Je ne peux pas actionner la fonction de test directement, elle doit passer par une autre fonction.

Ceci est juste une démo d'un problème beaucoup plus gros, mais résoudre ce problème va définitivement résoudre mon problème. Si cela ne peut pas être fait, j'ai besoin de repenser complètement beaucoup de choses.

function test($p1, $p2="hello", $p3=5, $p4=true) { 

} 

-

function action($vars = array()) { 

    $count = count($vars); 

    switch($count) { 

     case 1: 
      $result = test($vars[0]); 
      break; 
     case 2: 
      $result = test($vars[0], $vars[1]); 
      break; 
     case 3: 
      $result = test($vars[0], $vars[1], $vars[2]); 
      break; 
     case 4: 
      $result = test($vars[0], $vars[1], $vars[2], $vars[3]); 
      break; 

    } 

    return $result; 

} 

-

action(array(1, "test")); 
+1

Il n'est même pas valide PHP. Il n'y a pas de mots-clés 'case' dans le' switch' –

+1

Vous recherchez ['call_user_func_array()'] (http://php.net/call_user_func_array). – mario

Répondre

0

Vous n'avez pas besoin d'utiliser la fonction "action", vous pouvez simplement utiliser la Fonction "test" seule avec l'aide de func_get_args() fonction php. Vous n'avez pas besoin de passer un tableau en arguments, vous pouvez appeler votre fonction "test" avec un nombre arbitraire d'arguments. Vous pouvez également jeter un oeil aux fonctions func_get_arg() et func_num_args() dans php.

Questions connexes