如何通过命令行参数在php中同时访问argv和选项

如何通过命令行参数在php中同时访问argv和选项,php,command-line,Php,Command Line,我们有许多php脚本运行在使用命令行参数的实时服务器上。 现在,我需要在其中一些cron中再添加一个参数,它将告诉我有关环境的信息,而环境又会选择服务器(从服务器、主服务器)。这种服务器选择是一个中央图书馆代码 我不想更改当前脚本中访问的参数。 因此,唯一的选择是在末尾添加这个新的环境参数。但在这种情况下,有些cron将不包含此环境参数。所以我不能盲目地访问库中的最后一个参数。 所以我想用选项来做这个 所以我的脚本将在终端中运行 php myscript.php arg1 arg2-env sl

我们有许多php脚本运行在使用命令行参数的实时服务器上。 现在,我需要在其中一些cron中再添加一个参数,它将告诉我有关环境的信息,而环境又会选择服务器(从服务器、主服务器)。这种服务器选择是一个中央图书馆代码

我不想更改当前脚本中访问的参数。 因此,唯一的选择是在末尾添加这个新的环境参数。但在这种情况下,有些cron将不包含此环境参数。所以我不能盲目地访问库中的最后一个参数。 所以我想用选项来做这个

所以我的脚本将在终端中运行 php myscript.php arg1 arg2-env slave

但在这种情况下,我无法在php中获得选项。可能是因为它混合了直接提供的参数和选项


怎么办?有什么帮助吗

首先在
argv
数组中搜索选项(
-env
),从数组(
$argv
)中获取
),并按1递增以获取选项的值:

if (false !== $key = array_search('-env', $argv)) {
    $value = $key+1;
    $env = $argv[$value]; // $env will be 'slave' now.
} else {
    // do something else
} 
也许有更好的选择


呵呵

调用脚本时,尝试将选项移到参数之前

 php myscript.php -e slave arg1 arg2


注意:这将更改
$argv
数组作为选项,其值将首先显示在
$argv
数组中,并将其他参数移到更高的索引中

我在寻找一些具体的解决办法。这更像是黑客。在本例中,如果我想访问env的值。我需要再次做一个黑客提取子字符串你能提供你已经尝试过的例子吗?并具体阐述这句话:“但在这种情况下,我无法在php中获得选项。可能是因为它混合了直接提供的参数和选项…”。
php myscript.php --env slave arg1 arg2