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

Я попытался получить последний переданный аргумент моей функции PHP.Почему моя функция не разрешает этот ввод?

Но вместо того, чтобы дать мне последний аргумент я получаю эти две ошибки:

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

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

Может кто-нибудь объяснить мне, почему это происходит, и как я могу это исправить?

+0

PHP-документация отличная ['func_get_arg()'] (http://php.net/manual/en/function.func-get-arg.php) – pNre

+0

Код не имеет никакого смысла ...?! Что такое 'func_get_args'? – deceze

+0

Насколько я понимаю, func_get_args возвращает количество пройденных аргументов. Таким образом, возможный результат будет таким же, как 4. О, я думаю, что нашел свою проблему. Во время тестирования я перепутал эту функцию. – CodeShark

ответ

2

Вы пытаетесь передать имя функции в качестве аргумента для func_get_arg(). Это никогда не будет работать в PHP.

Используйте это:

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

или, в качестве альтернативы:

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

После того, как я увидел свою ошибку в своем собственном коде (я так много тестировал, поэтому не видел, что я пытался использовать 'func_get_args' вместо' func_num_args'. Мне любопытно, почему мне нужно уменьшить nummber на один ? – CodeShark

+0

потому что массивные индексы в PHP начинаются с '0'. Значение:' array ('foo') 'будет иметь счет' 1', но вам нужно получить доступ к элементу '0' .. Вот почему' -1' – hek2mgl

1

Вы можете получить последний аргумент, используя

<?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); 
Смежные вопросы