【发布时间】:2014-04-27 15:15:32
【问题描述】:
我已经离开 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 列表,但没有什么特别突出的。
【问题讨论】:
-
试试
$value = $some_array[$unknown_key] ?: $default_value; -
@adamr 我最喜欢你的解决方案。将其发布为答案,我会接受。
-
请注意,即使在 Python 中,
some_dict.get(unknown_key, default_value)也不同于some_dict.get(unknown_key) or default_value。如果键unknown_key不在字典中,第一个将仅返回default_value,而如果未找到键或值为 false,则后者将返回default_value。
标签: php python arrays dictionary language-comparisons