首页 > 解决方案 > 检查关联数组是否不为空以及键是否存在的简写

问题描述

有没有办法检查变量是否不为空,然后使用简写检查变量是否嵌套了关联数组键?诸如关联数组的可选链接之类的东西?

我想简洁的例子:

public $arr;

//$arr gets set as an associative array somewhere else in the code.

function someFunc() {
   if ($this->arr && $this->arr['key1'] && $this->arr['key1']['key2'] == 'Some Value') { // shorten this line?
      // Do Something Cool!
   }
}

我正在寻找类似于 Javascript 中的可选链接的东西,例如:

if (obj.key1?.key2 == 'Some Value') { 
    // Do something kool
}

这很有可能是重复的,如果是这种情况,我提前道歉。我尝试在关联数组中搜索此内容,但找不到任何具体内容。

标签: php

解决方案


您可以保持 if 语句完好无损,但替换$this->arr && $this->arr['key1']Null Coalescing Operator ( ??),因此如果未定义这些,它将使用不等于测试字符串的回退:

if (($this->arr['key1']['key2'] ?? false) == 'Some Value') {
  // Do Something Cool!
}

因此,如果$this->arr['key1']['key2']已定义,则将其与 进行比较Some Value,否则,如果未定义,则将(例如)falseSome Valuewitch will保持比较false


推荐阅读