首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP CLI:如何处理未命名参数

PHP CLI:如何处理未命名参数
EN

Stack Overflow用户
提问于 2014-06-25 12:54:02
回答 1查看 836关注 0票数 1

在从命令行使用的PHP脚本中:

据我所知,函数getopt()只允许处理‘命名’参数,例如:$args = getopt("h:m:");将允许使用定义的参数运行脚本,如下所示:

代码语言:javascript
复制
  ./script.php -h24 -m60;  

但是如何获得第一个(第二个,第三个…)未命名的参数,例如:

代码语言:javascript
复制
 ./script  -h24 -m60 additional_argument_1 "argument 2";

$_SERVER['argv']允许获取所有参数,但根据使用的(可选)命名参数的数量,获取第一个未命名参数并不简单。

如何轻松地获取additional_argument_1和可选的第二个未命名参数的值?

EN

回答 1

Stack Overflow用户

发布于 2014-06-25 13:33:33

我会把getopt和argv结合起来。这将给你一个好的开始:

代码语言:javascript
复制
<?php

print_r($argc);
print_r($argv);

$getopt = getopt("a::b::c::");

$optionals = array();

// Get all arguments delivered
foreach ($argv as $key1=>$value1) {
    // Skip the filename
    if ($key1 == 0) {
        continue;
    }

    $match = false;
    // Compare to each argument recognized by getopt
    foreach ($getopt as $key2=>$value2) {
        if ("-".$key2.$value2 === $value1 || "--".$key2.$value2 === $value1) {
            $match = true;
            break;
        }
    }
    // If it was not recognized by getopt, it is an optional. Keep it.
    if (!$match) {
        $optionals[] = $value1;
    }
}

print_r($optionals);

?>

您可以从以下内容开始:

代码语言:javascript
复制
php getopt.php -aarg -c optional1 optional2 optional3

它将回答:

代码语言:javascript
复制
Array
(
    [0] => optional1
    [1] => optional2
    [2] => optional3
)

此外,还有一些非常有趣的建议:Run php script from command line with variable

但你可能想要重新考虑你的设计,有几个未命名的选项。此外,示例代码可以重构为通过回调增强PHP数组函数的用法,或者将内部循环提取到函数中。但这是一个很好的开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24400439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档