0

我有以下代码:

$data = unserialize(db::select_xf_session_blob($_COOKIE['xf_session']));
$user_id = $data['user_id'];

必须声明一个变量以便我可以获取它的索引似乎是一种浪费。

这似乎是一个更优雅的解决方案:

$user_id = unserialize(db::select_xf_session_blob($_COOKIE['xf_session']))['user_id'];

但这当然是无效的。

我的问题是,有没有更优雅的方式来编写我的第一个代码示例?

4

2 回答 2

3

在 PHP 5.4 中你可以做第二个。但是在以前的版本中,您必须执行第一个。

于 2012-10-03T08:06:56.053 回答
1

您可以使用虚拟函数:

function sub(array $arr, $key) {
    return $arr[$key];
}

像这样:

$user_id = sub(unserialize(db::select_xf_session_blob($_COOKIE['xf_session'])), 'user_id');

或者,您可以升级到支持下标表达式的最新版本的 PHP。

于 2012-10-03T08:08:35.043 回答