我已经离开PHP世界几年了,最近我继承了一个PHP项目。不过,在PHP中本应相当简单的一些东西却让我摸不着头脑。在Python中,我可以执行以下操作:
value = some_dict.get(unknown_key, default_value)
我的第一个猜测是在PHP中做同样的事情:
$value = $some_array[$unknown_key] || $default_value;
但是$value
变成了一个布尔值,因为它不支持值短路。我也得到了一个Notice: Undefined index: the_key
,但我知道我可以通过在@
前面加上前缀来抑制它。
有没有办法在PHP中实现与Python的dict.get(key, default)
类似的行为?我检查了PHP的array functions列表,但没有什么特别之处。
发布于 2014-03-21 00:08:18
我猜你想要的东西大致如下:
$value = array_key_exists($unknown_key, $some_array) ? $some_array[$unknown_key] : $default_value;
这将检查键是否存在并返回值,否则将分配您已分配给$default_value
的默认值。
发布于 2014-03-21 00:10:12
$value = isset($some_array[$unknown_key]) ? $some_array[$unknown_key] : $default_value;
这样你就不需要抑制警告了
发布于 2014-03-21 04:54:59
试试这个:
$value = $some_array[$unknown_key] ?: $default_value;
这相当于Python中的这行代码:
value = some_dict.get(unknown_key, default_value)
请注意,在键存在但其值为False值的边缘情况下,您将获得$default_value
,这可能不是您想要的。
https://stackoverflow.com/questions/22538691
复制相似问题