2017-06-02 57 views
0

我試圖更新session-Array中的值,但它不起作用。 初始設置:Phalcon:無法在會話中更新數組中的值

$bag = new SessionBag('p-' . $productId); 
$bag->person = ['name' => 'john', 'age' => 25]; 

然後更新:

$bag->person['age'] = 30; 

後,年齡仍然是25(在Xdebug的會話選中)。

回答

1

如果您在Web服務器上啓用警告/通知,您會看到類似「注意:間接修改重載屬性」的內容。

如何完成你想要的?

$bag = new \Phalcon\Session\Bag('testest'); 
$bag->person = ['name' => 'john', 'age' => 25]; 
// $bag->person['age'] = 30; // Triggers Notice and will not work 

$temp = $bag->person; 
$temp['age'] = 44; 
$bag->person = $temp; 

print_r($bag); 

[人] =>陣列( [名] =>約翰 [年齡] => 44)

如果你有興趣,爲什麼出現這種情況,你可以閱讀一些解釋這裏PHP - Indirect modification of overloaded property

+0

但它適用於某些人? https://forum.phalconphp.com/discussion/6015/storing-an-array-in-a-phalcon-session – EugenA

+0

我想這取決於PHP版本或服務器設置,不知道朋友:( –

+0

@EugenA我是我不認爲它確實如此,在過去的幾年中,我一直在使用Phalcon,但我認爲你所鏈接的這篇文章展示了人們期望它的工作方式,而不是它的實際工作方式。你不需要使用Phalcon的會話抽象,你可以很容易地使用'$ _SESSION',因爲這是一個超全球數組,你可以使用$ _SESSION ['person'] ['age'] = 30' – Pickle