命令行下$argv

$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() - 从命令行参数列表中获取选项

add a note add a note

User Contributed Notes 5 notes

up

down

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.

up

down

19

hamboy75 at example dot com ¶

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;
}

up

down

1

Steve Schmitt ¶

5 years ago

If you come from a shell scripting background, you might expect to find this topic under the heading "positional parameters".

up

down

-1

KRowe ¶

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).

up

down

-36

Jesse ¶

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.


转载于:https://my.oschina.net/yonghan/blog/470530

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值