getopt() 的边缘情况

此示例显示了当用户输入不常见时 getopt 的行为:

getopt.php

var_dump(
    getopt("ab:c::", ["delta", "epsilon:", "zeta::"])
);

Shell 命令行

$ php getopt.php -a -a -bbeta -b beta -cgamma --delta --epsilon --zeta --zeta=f  -c gamma
array(6) {
  ["a"]=>
  array(2) {
    [0]=>
    bool(false)
    [1]=>
    bool(false)
  }
  ["b"]=>
  array(2) {
    [0]=>
    string(4) "beta"
    [1]=>
    string(4) "beta"
  }
  ["c"]=>
  array(2) {
    [0]=>
    string(5) "gamma"
    [1]=>
    bool(false)
  }
  ["delta"]=>
  bool(false)
  ["epsilon"]=>
  string(6) "--zeta"
  ["zeta"]=>
  string(1) "f"
}

从这个例子中可以看出:

  • 如果启用,单个选项(无冒号)始终带有 false 的布尔值。
  • 如果重复选项,则 getopt 的输出中的相应值将成为数组。
  • 必需的参数选项(一个冒号)接受一个空格或没有空格(如可选参数选项)作为分隔符
  • 在一个无法映射到任何选项的参数之后,后面的选项也不会被映射。