2013-10-06 2 views
-1
$name = func_get_arg(func_get_args); 

J'ai essayé d'obtenir le dernier argument passé de ma fonction PHP.Pourquoi ma fonction n'autorise-t-elle pas cette entrée?

Mais au lieu de me donner le dernier argument que je reçois ces deux erreurs:

Notice: Use of undefined constant func_get_args - assumed 'func_get_args' 

Warning: func_get_arg() expects parameter 1 to be long, string given 

Quelqu'un peut-il me expliquer pourquoi cela se produit et comment je peux résoudre ce problème?

+0

documentation PHP est grande [ 'func_get_arg()'] (http://php.net/manual/en/function.func-get-arg.php) – pNre

+0

Le code ne fait pas de sens ...?! Qu'est-ce que 'func_get_args' est censé être? – deceze

+0

Pour autant que je comprends func_get_args donne le dos nombre d'arguments passés. Donc, un résultat possible serait comme 4. Oh - Je pense que j'ai trouvé mon problème. Pendant le test, j'ai mélangé la fonction elle-même. – CodeShark

Répondre

2

Vous essayez de passer un nom de fonction comme argument pour func_get_arg(). Cela ne marchera jamais en PHP.

Utilisez ceci:

$arg = func_get_arg(func_num_args() -1); 

ou, comme alternative:

$arg = array_pop(func_get_args()); 
+0

Après avoir vu mon erreur dans mon propre code (j'ai testé ça, je n'ai pas vu que j'essayais d'utiliser 'func_get_args' au lieu de' func_num_args.) Je suis curieux, pourquoi ai-je besoin de diminuer le nombre d'un ? – CodeShark

+0

parce que les index de tableau en PHP commencent par 0. Signification: 'array ('foo')' aura un compte de '1' mais vous devez accéder à l'élément' 0' .. C'est pourquoi '-1' – hek2mgl

1

Vous pouvez obtenir le dernier argument en utilisant

<?php 
function foo() 
{ 
    $numargs = func_num_args(); 

    $arg_list = func_get_args(); 

    echo "Last argument: " . $arg_list[$numargs-1]; 
} 

foo(1, 2, 3); 
?> 
0

// This will return last argument passed to the function 
$lastArgument = func_get_arg(func_num_args()-1); 
Questions connexes