PHP关联数组与Python dict.get()等效

时间:2014-03-20 16:05:28

标签: php python arrays dictionary language-comparisons

我已经离开了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列表,但没有什么特别突出。

3 个答案:

答案 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,这可能不是您想要的。