2012-10-03 50 views
0

我有以下代码:PHP索引函数?

$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']; 

但它不是有效的,当然。

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

+1

这是无效的(还),但将有5.4 –

+0

@Jack 5.4是地地道道的稳定,自3月份以来... – lonesomeday

+0

@lonesomeday我知道,但据我所知大多数发行版仍然在5.3 –

回答

3

在PHP 5.4中,您可以使用can做第二个。但在以前的版本中,你必须做第一个。

+2

哇哦,那很整齐。 –

1

你可以使用一个虚拟函数:

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

像这样:

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

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