PHP有两种方法可以在CLI模式下接收参数

1。使用argv数组

2。使用getopt方法

1。使用argv数组

例如,你需要执行一个PHP和传递三个参数(类型=消息,is_hot = 1,= 5)

创建test.php


< PHP
print_r($ argv);
>


在命令行执行

php test.php新闻15

输出:


阵列
(
{ 0 } = > test.php
{ 1 }新闻
{ 2 } = 1
{ 3 } = > 5
)


你可以看到,argv { 0 }是目前执行的PHP文件的名称,并~ argv argv { 1 } { 3 }是值传递的参数。

argv { 1 }等于类型的值

argv { 2 }等于is_hot价值

argv { 3 }等于极限值

这可以基于argv数组为后续加工得到的参数传递。

缺点:

使用argv数组,你可以要传递的参数,但并购后,需要进行相应的处理,在本例中,我们需要argv { 1 }相应类型的参数,is_hot argv argv { 2 } { 3 }极限对应的参数,对应的参数,如果参数顺序写错在传输的过程中,程序是错误的。

例如:


< PHP
$参数=阵();
参数类型} = { $ $ argv { 1 };
{ } =参数'is_hot美元的美元argv { 2 };
{ } =参数'limit美元的美元argv { 3 };
print_r(美元的);
>


实施

php test.php新闻15

输出:


阵列
(
{类型>新闻
{ is_hot } = > 1
{限制} = 5
)


当传输序列不同时,得到的参数数目不同,导致后续程序出错。

实施

php test.php 15新闻

输出:


阵列
(
{类型} > 1
{ is_hot } = > 5
{限制>新闻
)


因此,当使用argv数组参数传递,我们需要注意的参数传递顺序。

2。使用getopt方法

getopt从命令行参数列表获取选项

阵列getopt(字符串数组longopts选项{,})

参数:

选项

字符串中的每个字符作为期权特征,并选择匹配传入的剧本始于一个连字符(-)。例如,一个选项字符串X标识选项-x.only a-z、A-Z和0-9是允许的。

longopts

一个选项数组,此数组中的每个元素作为一个选项字符串匹配,传递到脚本两连字符(-)选项。例如,长期选择单元,选择,确定一个选项-选择。

选项可以包含以下元素:

独立字符(不可接受的值)

冒号后面的字符(这个选项需要一个值)

后跟两个冒号字符(这个选项的选择)

该选项的值是字符串后面的第一个参数。

选择和longopts格式几乎是一样的。唯一不同的是,longopts需要选项数组(每个元素是一个选项),而选项需要一个字符串(每个字符是一个选项)。

传递值分隔符可以使用空格或=。

可选值不接受空间作为分隔符,只能使用分隔符作为分隔符。

返回值

这个函数返回选项参数对,当它失败时返回false。

该选项的解析将以所发现的第一个非选项终止,并将丢弃任何选项。

1。使用选项实例

a、b、c是必需的值。

d是可选值。

E是一个不可接受的值。


< PHP
美元= getopt('参数:B C D E:::);
print_r(美元的);
>


实施

php test.php - 1 B 2 C 3 D = 4 - 5

输出:


阵列
(
{ 1
{ 2
{ 3
{ > > > 4
{ >
)


2。使用longopts实例

型,is_hot是必要的价值

限制是可选值。

过期是不能接受的价值。


< PHP
longopt美元=阵列(
类型:,
is_hot:',
限制,
到期日
);
$参数= getopt('',longopt美元);
print_r(美元的);
>


实施

php test.php型新闻is_hot 1——极限= 10到期的= 100

输出:


阵列
(
{类型>新闻
{ is_hot } = > 1
{限制} = 10
{过期}
)


三.找到第一个非选项,然后忽略实例。


< PHP
longopt美元=阵列(
类型:,
is_hot:',
限制,
'expire'
);
$参数= getopt('',longopt美元);
print_r(美元的);
>


实施

php test.php型新闻is_hots 1——极限= 10到期的= 100

输出:


阵列
(
{类型>新闻
)


因为is_hots不是一个期权价值(定义is_hot),参数,从这里开始被丢弃。

总结:

使用argv数组参数传递,方法简单方便,参数的顺序不能错,和相应的处理后需要得到的参数。

使用getopt方法,参数名可以使用,参数的顺序是可选的,标准的比较。(推荐使用)

以上是本文的全部内容,希望本文的内容能给大家的学习或工作带来一定的帮助,同时也希望能给予更多的支持!