首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP关联数组等价于Python dict.get()

PHP关联数组等价于Python dict.get()
EN

Stack Overflow用户
提问于 2014-03-21 00:05:28
回答 3查看 2.2K关注 0票数 6

我已经离开PHP世界几年了,最近我继承了一个PHP项目。不过,在PHP中本应相当简单的一些东西却让我摸不着头脑。在Python中,我可以执行以下操作:

代码语言:javascript
复制
value = some_dict.get(unknown_key, default_value)

我的第一个猜测是在PHP中做同样的事情:

代码语言:javascript
复制
$value = $some_array[$unknown_key] || $default_value;

但是$value变成了一个布尔值,因为它不支持值短路。我也得到了一个Notice: Undefined index: the_key,但我知道我可以通过在@前面加上前缀来抑制它。

有没有办法在PHP中实现与Python的dict.get(key, default)类似的行为?我检查了PHP的array functions列表,但没有什么特别之处。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-21 00:08:18

我猜你想要的东西大致如下:

代码语言:javascript
复制
$value = array_key_exists($unknown_key, $some_array) ? $some_array[$unknown_key] : $default_value;

这将检查键是否存在并返回值,否则将分配您已分配给$default_value的默认值。

票数 7
EN

Stack Overflow用户

发布于 2014-03-21 00:10:12

代码语言:javascript
复制
$value = isset($some_array[$unknown_key]) ? $some_array[$unknown_key] : $default_value;

这样你就不需要抑制警告了

票数 2
EN

Stack Overflow用户

发布于 2014-03-21 04:54:59

试试这个:

代码语言:javascript
复制
$value = $some_array[$unknown_key] ?: $default_value;

这相当于Python中的这行代码:

代码语言:javascript
复制
value = some_dict.get(unknown_key, default_value)

请注意,在键存在但其值为False值的边缘情况下,您将获得$default_value,这可能不是您想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22538691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档