請注意,在類別方法中嘗試存取 $argv 和 $argc 時,需要將它們宣告為全域變數。
<?php
class A
{
public static function b()
{
var_dump($argv);
var_dump(isset($argv));
}
}
A::b();
?>
將會輸出 NULL bool(false) 並顯示「未定義的變數...」的通知。
而使用 global $argv 可以解決這個問題。
(PHP 4, PHP 5, PHP 7, PHP 8)
$argv — 傳遞給腳本的參數陣列
包含一個 陣列,其中包含從命令列執行腳本時傳遞給腳本的所有參數。
注意: 第一個參數 $argv[0] 永遠是用於執行腳本的名稱。
注意: 當 register_argc_argv 被停用時,這個變數將無法使用。
範例 #1 $argv 範例
<?php
var_dump($argv);
?>
使用以下指令執行範例: php script.php arg1 arg2 arg3
上述範例會輸出類似以下的內容
array(4) { [0]=> string(10) "script.php" [1]=> string(4) "arg1" [2]=> string(4) "arg2" [3]=> string(4) "arg3" }
備註:
這也可以透過 $_SERVER['argv'] 取得。
請注意,在類別方法中嘗試存取 $argv 和 $argc 時,需要將它們宣告為全域變數。
<?php
class A
{
public static function b()
{
var_dump($argv);
var_dump(isset($argv));
}
}
A::b();
?>
將會輸出 NULL bool(false) 並顯示「未定義的變數...」的通知。
而使用 global $argv 可以解決這個問題。
使用 $_GET 就不需要同時支援命令列和網頁瀏覽器的使用方式。
foreach ($argv as $arg) {
$e=explode("=",$arg);
if(count($e)==2)
$_GET[$e[0]]=$e[1];
else
$_GET[$e[0]]=0;
}
有時 $argv 可能為 null,例如當「register-argc-argv」設定為 false 時。在某些情況下,我發現從命令列(或 cron)執行「php-cli」而不是「php」時,變數會正確填入。