PHP关联数组相当于Python的dict.get()吗
我已经离开PHP的世界好几年了,最近接手了一个PHP项目。不过,有些在PHP中应该很简单的事情让我感到困惑。在Python中,我可以这样做:
value = some_dict.get(unknown_key, default_value)
我在PHP中第一个想到的做法是:
$value = $some_array[$unknown_key] || $default_value;
但是在PHP中,$value
变成了布尔值,因为PHP不支持值的短路运算。我还收到了一个Notice: Undefined index: the_key
的提示,不过我知道可以通过在前面加上@
来抑制这个提示。
有没有办法在PHP中实现类似于Python的dict.get(key, default)
的功能呢?我查看了PHP的数组函数列表,但没有找到特别合适的。
3 个回答
1
试试这个:
$value = $some_array[$unknown_key] ?: $default_value;
这行代码在Python中是等价的:
value = some_dict.get(unknown_key, default_value)
注意,在一种特殊情况下,如果这个键存在但它的值是“假”的(比如0、空字符串等),你会得到$default_value
,这可能不是你想要的结果。
4
$value = isset($some_array[$unknown_key]) ? $some_array[$unknown_key] : $default_value;
这样你就不需要去屏蔽警告了
7
我想你想要的东西大概是这样的:
$value = array_key_exists($unknown_key, $some_array) ? $some_array[$unknown_key] : $default_value;
这个代码会先检查这个“键”是否存在,如果存在就返回它的“值”;如果不存在,就会使用你之前设置的默认值,也就是$default_value
。