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

时间:2014-09-25 08:02:12

标签: php command-line

我们在实时服务器上运行许多php脚本,这些脚本使用来自命令行的参数。 现在我需要在其中一些crons中添加一个参数,它将告诉我环境,然后选择服务器(slave,master)。这些服务器选择是一个中央库代码。

我不想更改当前脚本中访问的参数。 所以只有选项是在最后添加这个新的环境参数。但在这种情况下,有些crons不会包含这个环境参数。所以我不能盲目地访问库中的最后一个参数。 所以我想为此使用选项。

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

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

该怎么办?有帮助吗?

2 个答案:

答案 0 :(得分:1)

首先在-env数组中搜索选项(argv),从数组(key)获取$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 if in_array() how to get the key as well?呵呵!

答案 1 :(得分:0)

在调用脚本时尝试在参数之前移动选项。

 php myscript.php -e slave arg1 arg2

php myscript.php --env slave arg1 arg2

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