我有以下代码示例,就像我在PHP 5.5上所期望的那样工作,但是在托管服务器中我有PHP 5.2.17而它没有。
如果我多次运行它,我得到了我所期待的,数组随着数字的不同而变大。
但是当我在PHP 5.2.17上运行它时,我得到相同的数字,因为class A
的实例被冻结了。
甚至,如果我删除这一行$_SESSION['a'] = $a;
,那么它适用于PHP 5.2.17,但它不是我需要的。任何了解PHP版本的人都可以想出一种方法来管理它。感谢
<?php
class A
{
public $var = 0;
}
session_start();
if(isset($_SESSION['a_array']))
{
$a = new A();
$_SESSION['a'] = $a;
$a->var = rand();
array_push($_SESSION['a_array'], $a);
}
else
{
$a_array = Array();
$_SESSION['a_array'] = $a_array;
}
var_dump($_SESSION['a_array']);
?>
答案 0 :(得分:0)
我设法找到一个肮脏和bizzarre解决方案。我不知道它是否适合其他目的,但至少我可以继续其他的东西。奇怪的是,如果您更改$ _SESSION数组的键的名称并添加引用分配$_SESSION['a_aux'] = &$a;
,则它会起作用。使用PHP 5.5和PHP 5.2.17。
<?php
class A
{
public $var = 0;
}
session_start();
if(isset($_SESSION['a_array']))
{
$a = new A();
$a->var = rand();
array_push($_SESSION['a_array'], $a);
$_SESSION['a_aux'] = &$a;
}
else
{
$a_array = Array();
$_SESSION['a_array'] = $a_array;
}
var_dump($_SESSION['a_array']);
?>