我已经离开了PHP世界几年,而且我最近继承了一个PHP项目。在PHP中应该相当容易的东西虽然让我望而却步。在Python中,我可以执行以下操作:
value = some_dict.get(unknown_key, default_value)
我在PHP中做同样事情的第一个猜测是:
$value = $some_array[$unknown_key] || $default_value;
但是$value
变成了布尔值,因为PHP不支持值短路。我也得到Notice: Undefined index: the_key
,但我知道我可以通过添加@
前缀来抑制它。
我是否有办法在PHP中实现与Python dict.get(key, default)
类似的行为?我检查了PHP的array functions列表,但没有什么特别突出。
答案 0 :(得分:5)
我想你想要的东西如下:
$value = array_key_exists($unknown_key, $some_array) ? $some_array[$unknown_key] : $default_value;
检查密钥是否存在并返回值,否则将分配您已分配给$default_value
的默认值。
答案 1 :(得分:2)
$value = isset($some_array[$unknown_key]) ? $some_array[$unknown_key] : $default_value;
这样您就不需要压制警告
答案 2 :(得分:0)
试试这个:
$value = $some_array[$unknown_key] ?: $default_value;
这相当于Python中的这行代码:
value = some_dict.get(unknown_key) or default_value
请注意,在密钥存在但其值为false的边缘情况下,您将获得$default_value
,这可能不是您想要的。