PHP - 如何将数组发送到另一个页面?

2022-08-30 18:07:18

我正在尝试将数组发送到另一个页面。

我之前尝试过的是:

第 1 页

<input type='hidden' name='input_name' value='<?php print_r($array_name); ?>' />

和页面2

<?php 
$passed_array = $_POST['input_name'];
?>

现在,如何使行为像数组一样?$passed_array

或者你知道任何其他方法来解决这个问题吗?

谢谢 迈克

编辑:我想这样做的原因是因为我需要避免会话和cookie。


答案 1

你可以把它放在会话中:

session_start();
$_SESSION['array_name'] = $array_name;

或者,如果您想通过表单发送它,则可以序列化它:

<input type='hidden' name='input_name' value="<?php echo htmlentities(serialize($array_name)); ?>" />

$passed_array = unserialize($_POST['input_name']);

会话的优点是客户端看不到它(因此无法篡改它),如果阵列很大,会话的速度会更快。缺点是,如果用户打开了多个选项卡,它可能会感到困惑。

编辑:很多答案都建议使用.这在一般情况下不起作用 - 它需要修改以支持关联数组,并且需要修改很多以支持多维数组(icky!坚持序列化要好得多。name="input_name[]"


答案 2

当我的数组中的某些值包含换行符时,我在上述示例中遇到了一些问题。我的一些价值观也有来自外语的字符,这些字符一直搞砸了。以下是我的解决方案。htmlentities

在要从中传递数组的页面中...

<INPUT TYPE="hidden" NAME="input_name" VALUE="<?= base64_encode(serialize($array_name)); ?>">

在接收数组的页面中...

$array = unserialize(base64_decode($_POST["input_name"]));