请注意,在尝试在类方法中访问 $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,这样您就不需要同时支持它,如果它可以从命令行和 Web 浏览器中使用。
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”时,变量会正确填充。