6

我已经离开 PHP 世界几年了,最近我继承了一个 PHP 项目。不过,在 PHP 中应该相当容易的事情却让我望而却步。在 Python 中,我可以执行以下操作:

value = some_dict.get(unknown_key, default_value)

我在 PHP 中做同样的事情的第一个猜测是:

$value = $some_array[$unknown_key] || $default_value;

但是$value变成布尔值是因为 PHP 不支持值短路。我也得到了 aNotice: Undefined index: the_key但我知道我可以通过添加前缀来抑制它@

有没有办法在 PHP 中完成与 Python 类似的行为dict.get(key, default)?我检查了 PHP 的数组函数列表,但没有什么特别突出的。

4

3 回答 3

7

我猜你想要一些类似以下的东西:

$value = array_key_exists($unknown_key, $some_array) ? $some_array[$unknown_key] : $default_value;

这将检查键是否存在并返回值,否则将分配您分配给的默认值$default_value

于 2014-03-20T16:08:17.623 回答
3
$value = isset($some_array[$unknown_key]) ? $some_array[$unknown_key] : $default_value;

这样你就不需要禁止警告

于 2014-03-20T16:10:12.103 回答
1

尝试这个:

$value = $some_array[$unknown_key] ?: $default_value;

这相当于 Python 中的这行代码:

value = some_dict.get(unknown_key, default_value)

请注意,在密钥存在但其值为 false 的边缘情况下,您将获得$default_value,这可能不是您想要的。

于 2014-03-20T20:54:58.850 回答