【问题标题】:unsetting a property using a Ternary Operator使用三元运算符取消设置属性
【发布时间】:2021-09-11 19:48:06
【问题描述】:
public function checkTheLogin() {

        (isset($_SESSION['userID'])) ? $this->$signedIn = true. $this->userID = $_SESSION['userID'] : $this->signedIn = false. (unset($this->userID));
    }

我的课程会话中有 2 个属性为 $signedIn 和 $userId。所以我想将 $userId 分配给 $_SESSION['userID'] 并分配 $signedIn = true 如果有这样的会话,否则我想分配 $signedIn = false 并取消设置 $userId 属性。要执行此任务,我决定使用三元运算符而不是使用 if else 语句,我已经尝试过,但它在 VS Code 中引发错误。希望有人能帮助谢谢。

【问题讨论】:

  • 请不要使您的代码复杂化。使用if。在这里使用三元不会有任何帮助。
  • 虽然可以使用三元运算符实现此目的,但当您为每个条件执行多个函数时,最好使用标准 if-else 语句。
  • 在某些语言中,您可以使用三元中的逗号运算符来执行此操作。但是 PHP 不允许这样做。

标签: php sql conditional-operator


【解决方案1】:

您不能将多个表达式放在三元运算符的后继表达式中。另外,unset 是一个语句,而不是表达式,所以它根本不能在三元组中使用。

我能想到的最接近的是数组赋值。但这会将$this->userID 设置为null,而不是取消设置。

[$this->signedIn, $this->userID] = 
    isset($_SESSION['userID']) ? 
        [true, $_SESSION['userID']] : 
        [false, null];

【讨论】:

    猜你喜欢
    • 2020-07-02
    • 2018-01-03
    • 1970-01-01
    • 2018-12-29
    • 2018-10-27
    • 2012-12-26
    • 2011-05-13
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多