J'ai un problème vraiment simple dans mon script PHP. Il existe une fonction définie qui prend Quand j'appelle cela comme ça, ça marche aussi bien: P> $my_args = array("hello", "world");
foo(do_some_stuff($my_args));
8 Réponses :
http: //www.php .NET / Manual / fr / Fonctions.Arguments.php # Fonctions.Variable-Arg-List P>
N'est-ce pas ce que vous voulez? p>
éditer Ah ... Ok ... qu'en est-il de cela: Passage d'un tableau en tant qu'arguments, pas un tableau, pas de tableau, en PHP p>
Non. J'ai déjà lu ceci. Toutes les fonctions sont censées fonctionner à l'intérieur i> ma fonction "foo". J'ai besoin de diviser les arguments avant qu'ils ne soient passés à la fonction.
Cela me semble que vous recherchez call_user_func_array code>. p>
Merci pour la réponse, c'est exactement ce dont j'ai besoin. Cependant, je ne peux accepter qu'une seule réponse.
Acceptez simplement celui qui donne soit le détail le plus nécessaire, ou le plus tôt :)
Eh bien, vous avez besoin http://php.net/manual/fr/funck.Call-user-func-array.php p> p> call_user_func_array code>
Merci pour la réponse, c'est exactement ce dont j'ai besoin. Cependant, je ne peux accepter qu'une seule réponse.
utiliser p>
+1 pour réflexion code> s. Bien que ce soit comme une surkillée ici, mais c'est toujours cool de traiter avec eux!
Si vous pouvez modifier le code de foo () code> Il doit être facile de résoudre ce problème dans un seul endroit.
function foo()
{
$args = func_get_args();
if(count($args) == 1 && is_array($args[0]))
{
$args = $args[0]
}
// use $args as normal
}
Cela ne fonctionne pas s'il veut passer un tableau (pour réel) comme premier argument.
Non, cela ne fonctionne pas s'il n'y a qu'un seul argument et que cet argument est censé être un tableau. S'il y a plus d'un argument, ils sont tous laissés seuls.
Vous recherchez http://it2.php.net/ Manuel / fr / Function.Call-User-Func-Array.php P>
blockQuote> Utilisation: P> call_user_func_array () code>.
$my_args = array("hello", "world");
call_user_func_array('foo', $my_args);
// Equivalent to:
foo("hello", "world");
C'est bien mieux que d'utiliser la réflexion à mon avis
Cette solution n'est pas recommandée du tout, mais il suffit de montrer une possibilité: p>
en utilisant eval code> p>
eval ("foo ('". Implode ("'", '", $ args_array)."') "" "
Je sais que ce n'est que "montrant une possibilité", mais toujours ... c'est Eval. ;)
Je sais que c'est une vieille question mais elle apparaît toujours comme le premier résultat de la recherche - alors voici un moyen plus facile; Source:
https://www.php.net/manual/fr/ fonctions.arguments.php # Exemple-142 P> P>
Dupliqué possible de Passage d'un tableau en tant qu'arguments, pas un tableau , dans php
Utilisez cette réponse. Ceci est beaucoup plus précis. Stackoverflow.com/a/34049110/2147023