【问题标题】:Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) ) [duplicate]致命错误:无法对表达式的结果使用 isset()(您可以改用“null !== expression”))[重复]
【发布时间】:2019-05-22 08:49:09
【问题描述】:

我不断收到错误:

致命错误:无法对表达式的结果使用 isset()(您可以改用“null !== expression”)

这是第 10 行

if (isset($_GET['page']=="logout")) {

这是该代码的“全部”部分:

    session_destroy();
    echo '<script>document.location.href="shipper.php"</script>';

}

【问题讨论】:

  • 您确实可以搜索此错误。我在 Google 搜索中得到的第一个结果是我用来结束问题的副本。

标签: php


【解决方案1】:

isset() 不能这样工作。它只检查某物是否存在,但从不检查值。你可以这样做

<?php
    if(isset($_GET['something'] && $_GET['something'] === "value"){
             //do something
    }
?>

【讨论】:

【解决方案2】:

isset 是一个函数,您可以将值传递给它以确定该变量是否已设置。您没有在其中添加等式表达式。

你可以这样做:

if (isset($_GET['page']) && $_GET['page'] == 'logout') {

或者简单地说:

if ($_GET['page'] == 'logout') {

旁注...如果您正在使用文字字符串(其中没有变量),您应该只使用单引号。 (注意我在上面改变了)

【讨论】:

  • 1.您的第二个建议将生成“未定义索引”通知,不应使用。 2. 静态字符串上的双引号和单引号在功能上没有区别,在这种简单的情况下,没有理由有人“应该”使用其中一个。
  • 单引号具有更好的性能,因为 PHP 不必解释其中的变量。所以,是的,这是有原因的。如果是字符串文字,则使用单引号。
  • 不,他们没有。没有任何有意义的方式。某人可能花在短暂考虑使用一个引号或另一个引号所花费的时间比他们一生中集体节省的时间要多几个数量级,除非使用不同的引号来封装字符串。
  • 你肯定是不正确的。如果不是为了轻微的性能优势而这样做,您应该这样做以符合行业公认的最佳实践,以及成为一名纪律严明的编码人员并真正考虑您要完成的工作。知道您是在处理字符串文字还是需要解析的字符串是一门重要的学科,并且成为成熟程序员的第二天性。请参阅 Zend 标准,例如:framework.zend.com/manual/2.4/en/ref/…
  • 哦,我们开始吧:phpbench.com 如果您封装一个空字符串,可能可以节省 6 个 皮秒,假设这不仅仅是误差范围。不要再传播这样的不良信息了。
猜你喜欢
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 2015-06-20
相关资源
最近更新 更多