PHP getopt用if()elseif()打破中间条件

时间:2014-10-01 11:10:11

标签: php getopt

我不确定会出现什么问题,也不会从官方文档中得到很多帮助。

但这就是正在发生的事情。

我有选择' a',' c:'和' m:'使用getOpt()

从命令行读取

它们的布局如下:

if ($op = getopt("a")) {

    doAll();

} elseif ($op = getopt("c:")) {

    doSome($op["c"]);

} elseif ($op = getopt("m:")) {

    doOne($op["m"]);

} else {

    echo "INVALID ARGS"; exit;

}

选项' a'和' m'工作找到,但当我使用选项' c'用:

php4 rebuild_mastertag.php -c 1234

始终打印INVALID ARGS

如果我通过1或12或12345678使事情变得更加神秘,那么它可以工作,但它不适用于123,1234,12345,123456,1234567这类数字。

真的很困惑。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

谢谢@hchr

您的解决方案似乎没有遇到麻烦:

$op = getopt("ac:m:");

if (empty($op)) { alertForInvalidArgument(); } else { callProcessor($op);
}

function callProcessor($op)
{
    if ($op["a"]) {

        doAll();

    } elseif ($op["c"]) {

        doSome($op["c"]);

    } else {

        doOne($op["m"]);

    }
}