2013-05-07 95 views
7

我試圖執行此代碼:未定義的變量ARGC PHP

function main(){ 
    if ($argc < 1){ 
    listDir("."); 
    } 
    else{ 
    for($i = 0; $i <= sizeof($argv); $i++){ 
     listDir($argv[$i]); 
    } 
    } 
} 

但我發現了以下錯誤:

PHP Notice: Undefined variable: argc in /home/me/test.php on line 15 

我認爲$的argv和$ ARGC爲全局變量!我怎樣才能擺脫這個錯誤?謝謝。

+3

'$ argc'和'$ argv'僅在從命令行運行時自動填充。你是否從命令行運行這個腳本? – 2013-05-07 22:20:24

+0

+1 @GeorgeCummins我正要問一樣的 – Bart 2013-05-07 22:21:06

+0

我從命令行運行這個 – Pol0nium 2013-05-07 22:24:45

回答

18

添加後

global $argc, $argv; 

function main() { 

這些變量都在全球範圍內,但不是在你的函數的範圍。全局關鍵字導入它們。

+1

這些變量是全局變量。所以再次宣佈它們是全球性的是毫無意義的。 – Bart 2013-05-07 22:22:09

+3

很好的答案! +1 @Bart爲什麼不在downvote之前測試? – hek2mgl 2013-05-07 22:24:04

+1

@Bart這個答案很好 - 即使它是全局的 - 如果你想在函數內部使用它,你應該聲明它。 – alfasin 2013-05-07 22:24:55

3

你可能想要做

$argc = $_SERVER['argc']; 
$argv = $_SERVER['argv']; 
3

我有同樣的問題。

您可以運行以下命令。

$ php -i | grep argv #run this comand 

將輸出這樣的:

<tr><td class="e">register_argc_argv</td><td class="v"> Off</td><td class="v"> Off</td></tr> 

這意味着,如果是關閉的,你可以去你的php.ini並將其設置爲register_argc_argv = On你的PHP不登記的argv和argc個

這解決了我的問題。