php怎么接收命令行参数
时间 : 2023-04-03 19:52:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,我们可以通过 `$_SERVER['argv']` 获取到命令行传入的参数。

`$_SERVER['argv']` 返回的是一个数组,数组中第一个元素是执行的脚本的名称,其余元素则是传入的参数,以空格分隔。

例如,假设我们有一个示例的 PHP 脚本 `args.php`,代码如下:

```php

<?php

$args = $_SERVER['argv'];

var_dump($args);

如果我们在命令行中执行以下命令:

```sh

php args.php foo bar

则 `args.php` 脚本中的 `$args` 数组为:

array(3) {

[0]=>

string(8) "args.php"

[1]=>

string(3) "foo"

[2]=>

string(3) "bar"

}

其中,`args.php` 是第一个元素,`foo` 和 `bar` 则是第二个和第三个元素。

我们可以通过 `count()` 函数获取传入的参数数量,通过 `isset()` 函数判断是否传入了某个参数。

例如,以下示例可以输出传入的所有参数的值,同时判断是否传入了 `-h` 或者 `--help` 参数:

```php

<?php

$args = $_SERVER['argv'];

for ($i = 1; $i < count($args); $i++) {

if ($args[$i] === '-h' || $args[$i] === '--help') {

echo "Usage: php args.php [options] [arguments]\n";

echo "Options:\n";

echo "-h, --help Display this help message\n";

exit;

}

echo "Argument $i: " . $args[$i] . "\n";

}

这个代码片段展示了如何解析命令行参数并执行相应的操作。你可以根据自己的需求修改代码来实现特定的功能。

在PHP中,可以使用全局变量 `$argv` 来获取命令行参数。`$argv` 是一个包含命令行参数的数组,其下标从 0 开始,下标为 0 的元素存储的是脚本文件名,下标从 1 开始的元素存储的是传递给脚本的参数。

例如,如果我们运行如下命令行:

php test.php arg1 arg2 arg3

那么在 `test.php` 脚本中可以通过 `$argv` 获取传递的参数,其中 `$argv[0]` 存储的是 `test.php`,而 `$argv[1]`、`$argv[2]`、`$argv[3]` 分别存储的是 `arg1`、`arg2`、`arg3`,代码示例:

```php

<?php

// 获取传递的参数

$arg1 = $argv[1];

$arg2 = $argv[2];

$arg3 = $argv[3];

// 输出传递的参数

echo "arg1: $arg1\n";

echo "arg2: $arg2\n";

echo "arg3: $arg3\n";

输出结果为:

arg1: arg1

arg2: arg2

arg3: arg3

注意,`$argv` 只有在命令行模式下才可用,如果在 Web 服务器环境下使用 `$argv`,则会抛出“Undefined variable: argc/argv”等错误,因此请确定您的 PHP 脚本是在命令行模式下执行的。

除了 `$argv`,PHP 还提供了命令行参数解析函数 `getopt()` 来解析命令行参数,该函数可用于解析命令行选项和参数,进一步方便脚本处理命令行输入,代码示例:

```php

<?php

// 命令行选项(选项后面有冒号表示必须跟随参数,没有则不需要)

$options = getopt("u:p::", ["url:", "password::"]);

// 输出解析结果

var_dump($options);

运行命令为:

php test.php -u www.example.com -p pwd123

结果为:

array(2) {

["u"]=>

string(15) "www.example.com"

["p"]=>

string(6) "pwd123"

}

以上解析了 `-u` 和 `-p` 两个选项和对应的参数,也可以使用 `--url` 和 `--password` 来解析,解析后返回的是一个数组。此外,还可以通过设置 `getopt()` 的第三个参数来定义是否忽略未知的选项,以及第四个参数来规定选项定义的方式等选项,详情请参考 PHP 文档。