【问题标题】:getopt -> return PHP Notice: Undefined index:getopt -> 返回 PHP 注意:未定义的索引:
【发布时间】:2016-10-27 15:45:20
【问题描述】:

我正在使用 getopt 将变量传递给我的脚本,但我收到了以下消息:

PHP 注意:未定义索引:

这是我的代码:

$MyOptions = getopt("c:hp:");
if ($MyOptions['c']) { //line wher error show up!
    $MyClub = $MyOptions['c'];
} else {
    $MyClub = '53';
}

我错过了什么?

【问题讨论】:

  • 调试你自己的代码。使用var_dump() 检查变量。
  • 我不能用这个。我没有 CLI 来查看输出。
  • Errrrmm... wat?
  • 除了你不知何故“没有 CLI”这意味着什么。您是否检查了您正在使用的功能的文档?
  • 我在 Synology 机器上开发了脚本。在这里,我可以通过 SSH 或 telnet 访问并在 CLI(命令行界面)上运行脚本。我在构建脚本时检查了变量和数组。错误从未出现!现在我已经将脚本传输到公司托管的 Web 服务器上,我只有一个 Web 界面,没有 SSH。在这里我得到了错误......

标签: php getopt


【解决方案1】:

问题是您的$MyOptions 数组中的索引c 不存在,您可以通过多种方式避免这种情况,但在这种情况下我的首选选项是替换整个if-@987654326 @ 声明与;

$MyClub = $MyOptions['c'] ?? '53';

??Null Coalescing operator

已添加空合并运算符 (??) 作为语法糖,用于需要将三元与 isset() 结合使用的常见情况。如果存在且不是NULL,则返回其第一个操作数;否则返回第二个操作数。

请注意,这仅适用于 PHP 7,否则您必须使用 isset() 来检查索引是否存在。

【讨论】:

  • 嗨@LaurentZotto,如果这个或任何答案已经解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
  • @LaurentZotto 是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 2017-02-02
  • 2011-05-26
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多