php - 检查关联数组是否不为空以及键是否存在的简写
问题描述
有没有办法检查变量是否不为空,然后使用简写检查变量是否嵌套了关联数组键?诸如关联数组的可选链接之类的东西?
我想简洁的例子:
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
}
这很有可能是重复的,如果是这种情况,我提前道歉。我尝试在关联数组中搜索此内容,但找不到任何具体内容。
解决方案
您可以保持 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
,否则,如果未定义,则将(例如)false
与Some Value
witch will保持比较false
。
推荐阅读
- python - 使用 Flask-SQLAlchemy 将 Flask 连接到 AWS RDS
- excel - Excel - 设置参数化数据源
- c# - Distinct() 值仍然允许重复
- c# - 从 SharePoint 网站中的列表中提取 ListItem
- python - 清除 Python 输入积压窗口
- go - 如何同时ping多个主机
- javascript - 如何使用 yarn 更新/降级包版本?
- javascript - 修改 CanvasRenderingContext2D.font 的字体系列而不影响其他任何东西的最佳方法是什么?
- asp.net-web-api2 - 我需要自己注册 autofac 的容器来连接 webapi 的依赖解析器吗?
- oracle - 光标选择列表中需要别名