2013-10-06 59 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'。我很好奇,爲什麼我需要減少一個數字? – 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); 
相關問題