isset与GET一起工作吗


Does isset work with GET?

我知道这似乎是一个愚蠢的问题,随着更多的研究,我可能会找到答案,但我有一个最后期限来帮助你。

使用codeigniter我试图查看url中的"ID"是"uID"(用户ID)还是"sID"(系统ID)。

我使用的代码是:

    if(isset($this->input->get('uID'))) {
        $getID = $this-input->get('uID');
    } else {
        $getID = $this->input->get('sID');
    }

当我使用它时,我会收到一个服务器错误,说网站暂时关闭或正在建设中。有什么想法吗?

提前感谢您的帮助。通常我会花更多的时间自己寻找答案,但今晚我没有时间。

您收到的警告可能是一个500错误——这意味着您的服务器没有设置为向您显示错误,或者您的index.php文件中没有启用它。

您得到但没有看到的错误是:"致命错误:无法在写入上下文中使用函数返回值",因为您无法在函数上使用isset。

如果可以的话,它不会达到您所期望的效果,因为CI的$this->input->get('key')总是返回一个值——如果密钥不存在,它会返回false。

因此,为了完成你想要做的事情,你应该写:

$getID = $this->input->get('uID') ? $this->input->get('uID') : $this->input->get('sID');

根据下面的评论,我想我也会以一种对你有意义的方式提供它:

if($this->input->get('uID')) {
  $getID = $this->input->get('uID');
}
else {
  $getID = $this->input->get('sID'):
}

这两种解决方案在功能上是相同的。

isset仅适用于变量
$this->input->get()是一个函数调用。这会给你一个错误。

我猜,如果请求中没有设置uID$this->input->get将返回nullfalse或诸如此类的内容。也就是说,您不需要isset,返回值应该已经是falsey

我建议你花点时间来阅读PHP的isset和empty的最终指南。