PHP Conference Japan 2024

$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'] 使用。

参见

添加备注

用户贡献的备注 6 个备注

tufan dot oezduman at googlemail dot com
13 年前
请注意,在尝试在类方法中访问 $argv 和 $argc 时,需要声明它们为全局变量。

<?php
class A
{
public static function
b()
{
var_dump($argv);
var_dump(isset($argv));
}
}

A::b();
?>

将输出 NULL bool(false),并显示“未定义变量...”的通知。

而 global $argv 可以解决此问题。
hamboy75 at example dot com
11 年前
使用 $_GET,这样您就不需要同时支持它,如果它可以从命令行和 Web 浏览器中使用。

foreach ($argv as $arg) {
$e=explode("=",$arg);
if(count($e)==2)
$_GET[$e[0]]=$e[1];
else
$_GET[$e[0]]=0;
}
Steve Schmitt
15 年前
如果您来自 shell 脚本背景,您可能希望在“位置参数”标题下找到此主题。
php at simoneast dot net
9 年前
有时 $argv 可能是 null,例如当“register-argc-argv”设置为 false 时。在某些情况下,我发现从命令行(或 cron)运行“php-cli”而不是“php”时,变量会正确填充。
Radon8472
3 年前
我发现如果您使用 php 内部 Web 服务器,即使在 php.ini 中将其设置为“On”,`register_argc_argv` 也始终为 OFF。

这意味着似乎无法在 php 内部命令行服务器中访问 argv/argc。
vatruski at t dot me
1 年前
您可以重新初始化 Web 应用程序的参数变量。
因此,如果您创建了一个命令行,通过一些额外的调整,您可以使其在 Web 上工作。
To Top