推荐使用$_SESSION存储数组,因其安全、简洁且适合中等数据量;其次可选POST隐藏字段或JSON传输,避免URL暴露;小量非敏感数据可用base64_encode(serialize())编码后GET传递;大数组可考虑临时文件方案。

如果您需要在PHP中将数组数据从一个页面传递到另一个页面,则不能直接通过URL传输复杂数据结构。以下是几种可行的实现方式:
一、使用$_SESSION存储数组
会话机制允许在多个页面间共享数据,适合传递中等大小的数组,且无需暴露数据给客户端。
1、在源页面顶部开启会话并赋值:
zuojiankuohaophpcn?php session_start(); $_SESSION["my_array"] = array("a" => 1, "b" => 2); ?>
2、在目标页面顶部开启会话并读取:
<?php session_start(); $data = $_SESSION["my_array"]; ?>
立即学习“PHP免费学习笔记(深入)”;
3、使用完毕后可选择销毁该键:
<?php unset($_SESSION["my_array"]); ?>
二、使用serialize与base64_encode编码后通过GET传递
适用于小型、非敏感数组,将其序列化为字符串再编码,避免URL非法字符问题。
1、在源页面对数组进行编码:
<?php $arr = array("x" => "hello", "y" => 3.14); $encoded = base64_encode(serialize($arr)); ?>
2、构造跳转链接:
<a href="target.php?data=<strong><font color="green"></font></strong>">跳转</a>
3、在目标页面解码还原:
<?php if (isset($_GET["data"])) { $decoded = base64_decode(urldecode($_GET["data"])); $arr = unserialize($decoded); } ?>
三、使用POST方法配合隐藏表单字段
适合在用户触发操作(如点击提交)时传递数组,数据不显示在URL中,安全性高于GET方式。
1、在源页面构建隐藏表单:
<form method="post" action="target.php">
<?php foreach ($array as $key => $value) { ?>
<input type="hidden" name="data[<strong><font color="green"></font></strong>]" value="<strong><font color="green"></font></strong>">
<?php } ?>
<input type="submit" value="提交">
</form>
2、在目标页面接收并还原:
<?php $arr = $_POST["data"] ?? array(); ?>
四、使用JSON格式通过POST或AJAX传输
利用JSON作为中间格式,兼容性好,易于前后端协同,尤其适合含嵌套结构的数组。
1、在源页面将数组转为JSON字符串:
<?php $json_str = json_encode($array); ?>
2、通过表单隐藏域或AJAX发送:
<input type="hidden" name="json_data" value="<strong><font color="green"></font></strong>">
3、在目标页面解析:
<?php $arr = json_decode($_POST["json_data"], true); ?>
五、写入临时文件后传递文件路径
适用于大数组或需跨请求周期保留的场景,但需注意文件权限与清理策略。
1、在源页面生成唯一文件名并写入:
<?php $file = sys_get_temp_dir() . "/" . uniqid("arr_") . ".tmp"; file_put_contents($file, serialize($array)); ?>
2、将文件路径传至目标页面(建议用session或POST,避免GET暴露路径):
<?php $_SESSION["temp_file"] = $file; ?>
3、在目标页面读取并删除:
<?php $file = $_SESSION["temp_file"]; $arr = unserialize(file_get_contents($file)); unlink($file); unset($_SESSION["temp_file"]); ?>











