PHP-如何将数组发送到另一个页面?
我正在尝试将数组发送到另一个页面 我以前试过的是: 第1页PHP-如何将数组发送到另一个页面?,php,arrays,Php,Arrays,我正在尝试将数组发送到另一个页面 我以前试过的是: 第1页 现在,如何使$passed\u array像数组一样工作 或者你知道解决这个问题的其他方法吗 谢谢,迈克 编辑:我想这样做的原因是因为我需要避免会话和cookie。您可以将其放在会话中: session_start(); $_SESSION['array_name'] = $array_name; 或者,如果您想通过表单发送,您可以: 在输入标记中将input_name更改为input_name[],然后为数组的每个值放置一个输入
现在,如何使$passed\u array
像数组一样工作
或者你知道解决这个问题的其他方法吗
谢谢,迈克
编辑:我想这样做的原因是因为我需要避免会话和cookie。您可以将其放在会话中:
session_start();
$_SESSION['array_name'] = $array_name;
或者,如果您想通过表单发送,您可以:
在输入标记中将input_name更改为input_name[],然后为数组的每个值放置一个输入标记
您不能一次发送所有数组,您必须单独发送每个值:
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[0]); ?>' />
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[1]); ?>' />
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[2]); ?>' />
...
您可以将其转换为字符串,然后取消序列化,将其转换回数组。像这样:
<input type='hidden' name='input_name' value='<?php serialize($array_name); ?>' />
请注意,要使用序列化数组,需要使用POST作为表单的传输方法,因为GET的大小限制在1024个字符左右
只要可能,我都会使用会话。当数组中的某些值包含换行符时,我遇到了上述示例中的一些问题。我的一些价值观也有来自外国语言的字符,这些字符htmlentities
一直在出错。以下是我的解决方案
在要从中传递数组的页面中
<INPUT TYPE="hidden" NAME="input_name" VALUE="<?= base64_encode(serialize($array_name)); ?>">
您只需json\u encode()
数组,然后在POST请求中将其作为字符串传递。用了很多次。每次都像年轻的奶头一样工作您可以对序列化数组进行签名/加密以防止篡改。或者插入一个特殊的唯一值,并在收到Serialize方法时检查其存在性,它会由于某种原因破坏html代码=/修正:我写的不是。。这就是答案:-)serialize在每个数组元素上放置一个“
。因此,使用”
编写html。就像为您的答案添加至少一些解释,而不仅仅是代码会更好确保您json\u解码它以再次获取数组。这非常有用,谢谢。轻微的输入错误(缺少回声),应为:@Daniel
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[0]); ?>' />
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[1]); ?>' />
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[2]); ?>' />
...
<input type='hidden' name='input_name' value='<?php serialize($array_name); ?>' />
<?php $passed_array = unserialize($_POST['input_name']); ?>
<INPUT TYPE="hidden" NAME="input_name" VALUE="<?= base64_encode(serialize($array_name)); ?>">
$array = unserialize(base64_decode($_POST["input_name"]));
<?php
/*arraytransfer.php*/
echo "Array transfer<br>";
$name = array( "mike", "tom" );
$arrCnt = sizeof( $name );
echo "arrCnt: $arrCnt<br>";
echo "<form action=\"arrayrcv2.php\" method=\"POST\">";
echo "<INPUT TYPE=\"HIDDEN\" NAME=\"arrCnt\" VALUE=\"$arrCnt\">";
for( $i=0; $i < $arrCnt; $i++ ) {
echo "<INPUT TYPE=\"HIDDEN\" NAME=\"name\" VALUE=\"$name[$i]\"> ";
}
echo "<input type=\"submit\" name=\"submit\" value=\"Submit me!\" />";
echo "</form>";
?>
<?php
/*arrayrecv.php */
$arrCnt = $_POST["arrCnt"];
echo "Receiving data arrCnt = $arrCnt<br>";
$name = array();
for( $i = 0; $i < $arrCnt; $i++ ) {
$var = $_POST["name"];
if( $var != "" ) array_push($name, $var );
}
print_r($name);
?>