【问题标题】:Phalcon: cannot update a value in array in sessionPhalcon:无法在会话中更新数组中的值
【发布时间】:2017-06-02 10:42:04
【问题描述】:

我正在尝试更新 session-Array 中的值,但它不起作用。 初始设置:

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

然后更新:

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

在那之后年龄仍然是 25 岁(在 xdebug-session 中检查)。

【问题讨论】:

    标签: php arrays session session-variables phalcon


    【解决方案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

    【讨论】:

    • 但它适用于某些人? forum.phalconphp.com/discussion/6015/…
    • 我猜这取决于php版本或服务器设置,不确定朋友:(
    • @EugenA 我不确定是否如此。在过去几年里我一直在使用 Phalcon,这对我来说肯定不是。我认为您链接到的帖子显示了人们期望它如何工作,而不是它实际上是如何工作的。请记住,您不需要使用 Phalcon 的会话抽象。你可以很容易地使用$_SESSION,因为这是一个超全局数组,你可以使用$_SESSION['person']['age'] = 30
    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2020-03-25
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多