PHP getopt с if () elseif () нарушает среднее условие

Я не уверен, что идет не так, ни из официальной документации я могу получить большую помощь.

Но это то, что происходит.

У меня есть опция ‘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.

Действительно сбит с толку.

Спасибо за ваше время.

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"]);

}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]