php-PHP5.2和5.5中的差异$\会话行为
我有下面的代码示例,它在PHP5.5上可以正常工作,但在托管服务器上我有PHP5.2.17,但它没有 如果我重新运行几次,就会得到我所期望的结果,数组会随着数字的不同而变大 但是当我在PHP5.2.17上运行它时,我得到了相同的数字,因为php-PHP5.2和5.5中的差异$\会话行为,php,class,session,Php,Class,Session,我有下面的代码示例,它在PHP5.5上可以正常工作,但在托管服务器上我有PHP5.2.17,但它没有 如果我重新运行几次,就会得到我所期望的结果,数组会随着数字的不同而变大 但是当我在PHP5.2.17上运行它时,我得到了相同的数字,因为class A的实例被冻结了 甚至,如果我删除这行$\u SESSION['a']=$a然后它在PHP5.2.17上工作,但这不是我需要的。任何了解PHP版本的人都可以想出一种方法来管理它。谢谢 <?php class A { public $v
class A
的实例被冻结了
甚至,如果我删除这行$\u SESSION['a']=$a代码>然后它在PHP5.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']);
?>
我设法找到了一个肮脏而怪异的解决方案。我不知道它是否适合其他用途,但至少我可以继续使用其他东西。奇怪的是,如果您更改$\u会话数组的键的名称并添加一个按引用分配,$\u会话['a_aux']=&$a代码>。在PHP5.5和PHP5.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']);
?>
是否尝试将整个对象放入会话变量中?至少看起来是这样。我想我需要,我需要从另一个脚本访问对象$a。所以我需要这个$_会话['a']=$a;你不应该那样做。制作另一个php并将该类放入文件中。一旦在需要访问的页面中包含文件/类,那么仍然可以执行:$a=new a()来访问该类,只要在我这样做的实践中包含另一个页面,这只是一个自洽的示例,因此,您可以剪切和粘贴它,它就会工作。这只是强调了需要有一个一致的开发和生产环境。您应该考虑运行一个VM或类似的东西,使用与生产中使用的软件相同的版本进行开发。这会节省你很多时间。与5.2相比,PHP5.5有很多新特性,也有很多变化。