0

这可能是一个愚蠢的问题,但只是想知道并且不知道如何搜索它。

代码:

$_SESSION['My_Temp_Array'] = array(
                              'hello' => 'world', 
                              'foo' => array('bar' => 'bar')
                             );

if (isset($_SESSION['My_Temp_Array'])) {
   $hello = $_SESSION['My_Temp_Array']['hello'];
   $foo   = $_SESSION['My_Temp_Array']['foo'];

   //SEE #Q
   unset($_SESSION['My_Temp_Array']);
}

#问:

Does this also unset $_SESSION['My_Temp_Array']['hello'] AND $_SESSION['My_Temp_Array']['foo'] ? Or Do I need to unset them manually?

我知道一旦数组键未设置,我将无法访问这些内部键,但它们是否保留在内存中?这些数组将保存大量数据,因此在此示例中内存不是问题,但在我的代码中却是。

注意: var_dump 在未设置后给我 null 所以我知道它们不在数组中,但它们是否保存在内存中?

4

1 回答 1

0

它们未设置并且有资格重复使用。如果您想确定,您可以先将引用设置为“null”,然后再进行取消设置。

$_SESSION['My_Temp_Array']['hello'] = null;

注意:如果您将 PHP 作为 CGI 运行,则无论如何都会在请求后释放内存,因为进程已终止。

您的里程可能与 apache 模块(最迟在 apache 子终止时释放)或 FastCGI(取决于处理多少请求的配置)非常相关。

于 2013-10-15T21:36:01.060 回答