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 的輸出中的相應值將成為陣列。
  • 必需的引數選項(一個冒號)接受一個空格或沒有空格(如可選引數選項)作為分隔符
  • 在一個無法對映到任何選項的引數之後,後面的選項也不會被對映。