从argv中删除getopt中的选项

时间:2016-04-17 07:50:00

标签: php command-line-interface getopt

是否有快速方法从$ argv中删除找到的选项?

基本上,我有

php trout.php --plugin dozer /opt/webapplications/Word/readme.log

在我的$ options = getopt();我有

Array
(
    [plugin] => dozer
)

$ argv有以下内容......

Array
(
    [0] => --plugin
    [1] => dozer
    [2] => /opt/webapplications/Word/readme.log
)

我希望$ argv只有

Array
(
    [0] => /opt/webapplications/Word/readme.log
)

我知道有关于弹出第一个数组元素的array_shift,我已经看到过去循环只是循环通过$ argv弹出所有元素,但是,我想知道是否有一种快速简便的方法用本机php做到这一点......

1 个答案:

答案 0 :(得分:0)

这就是我最终使用的

function __construct($args) {

    $this->options = getopt($this->shortopts, $this->longopts);

    array_shift($args);

    while(count($args) > 1) {

        if (strpos($args[0], '-') !== false && strpos($args[0], '-') == 0) {

            array_shift($args);

            if(in_array($args[0], $this->options)) {

                array_shift($args);
            }
        }
        else {

            break;
        }
    }

    $this->args = $args;
}