2012-10-03 49 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支持標表達式。