$argv
$argv — 传递给脚本的参数数组
说明
包含当运行于命令行下时传递给当前脚本的参数的数组。
Note: 第一个参数总是当前脚本的文件名,因此 $argv[0] 就是脚本文件名。
Note: 这个变量仅在 register_argc_argv 打开时可用。
范例
Example #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"
}
参见
getopt() - 从命令行参数列表中获取选项
User Contributed Notes 5 notes
34
tufan dot oezduman at googlemail dot com ¶
3 years ago
Please note that, $argv and $argc need to be declared global, while trying to access within a class method.
<?php
class A
{
public static function b()
{
var_dump($argv);
var_dump(isset($argv));
}
}
A::b();
?>
will output NULL bool(false) with a notice of "Undefined variable ..."
whereas global $argv fixes that.
19
1 year ago
To use $_GET so you dont need to support both if it could be used from command line and from web browser.
foreach ($argv as $arg) {
$e=explode("=",$arg);
if(count($e)==2)
$_GET[$e[0]]=$e[1];
else
$_GET[$e[0]]=0;
}
1
5 years ago
If you come from a shell scripting background, you might expect to find this topic under the heading "positional parameters".
-1
1 month ago
Improves on hamboy75's note by providing better support for positional arguments:
foreach ($argv as $arg) {
$e=explode("=",$arg);
if(count($e)==2)
$_GET[$e[0]]=$e[1];
else
$_GET[]=$e[0];
}
var_dump($_GET);
Using this modification, arguments without an = are treated as positional (this is not web standard but generally works).
-36
2 years ago
If your script is read from standard input or with the -r option, $argv[0] will be "-".
If you use the "--" option to separate PHP's arguments from your script's arguments, $argv[1] will be "--" if your script is read from a file. But if your script is read from standard input or with the -r option, the "--" will be removed.