2010-10-13 25 views
0

是否有任何方法可以在两页之间传递数组完整?在PHP页面之间传递大数组

我正在构建一个巨大的数组,并且它的构建使用大量的内存。我希望能够保存完整的数组,然后从另一个页面重新访问它?

如果我使用$x = print_r($array,true);并将其写入文件,那么我怎么能重建它到一个数组中,或者有更好的方法。

+0

多大的阵列?数字。你确定你需要整个阵列在下一页? – 2010-10-13 22:49:04

回答

2

您可以将其存储在会话(不知道它有多大)..如果你想写入文件..你可以做这样的事情:

$fp = fopen("file.php" , "w"); 
fwrite($fp , "<? \$array = ".var_export($array,true).";"); 
fclose($fp); 

,然后只包括文件像下一页上的正常文件加载。

+0

'serialize'函数在这种情况下更好:) – Sarfraz 2010-10-16 08:29:05

+0

@Sarfraz ..需要记住目标观众:) – 2010-10-16 08:30:39

3

您可以轻松地将该数据存储在会话中。像这样

$_SESSION['serialized_data'] = urlencode(serialize($your_data)); 

,然后再把你的第二页上:

$your_data = unserialize(urldecode($_SESSION[$serialized_data])); 

我用这种方法经常。

+0

如果发现它更适合将数据写入文件,则可以使用类似的序列化/反序列化方法。 – Michael 2010-10-13 22:43:37

+0

请注意,如果您使用的是对象引用,则无法序列化它们。 – Michael 2010-10-13 22:45:08

+0

我不确定这是否有助于其他人,但它适用于我的情况:我使用POST将数据传递到另一个页面。我也使用ajax,但显然你不需要。使用$ dataToPost = urlencode(serialize($ your_data));对我很好。 – rmooney 2013-05-15 14:16:33

0

在页面之间传递大量数据通常不是一个很好的决定,但可能会有例外 - 您想在这里完成什么?

我不会建议使用会话变量。在很多情况下,如果数据似乎在页面之间传递的很大,那就是。在这些情况下,使用数据库获取信息并从每个页面访问数据库可能很有用。

0

最简单的方法是使用会话变量。

$_SESSION['big_array']=$big_array; 

如果它是一个高容量的网站(如阵列将在内存中坐,直到会话过期),但应该罚款,否则这不会是特别理想。

你要确保你已经开始在会议开始前,如果有必要,可以做到用:

session_start();