这是我的数组
$array = array('foo' => 'bar', 'baz', 'bat' => 2);
<form method='POST' action='test.php' onsubmit='return validateForm()' >
echo '<input type="hidden" name="array" value= "'.implode(',', $array).'">';
echo "<<input type='submit' name='Submit' value='submit' />";
echo '</form>';
$arry = explode(',', $_POST['array']);
我得到的密钥是0,1,2
。哪个应该是“foo”,“baz”,“bat”。
如何获得正确的密钥?
答案 0 :(得分:1)
如果我是怀特,你需要在发布表格之后使用数组键来破坏数组值。
我认为,json_encode
是一个很好的解决方案。我正在添加另一种解决方案。
添加另一个隐藏元素,该元素将使用数组值发布数组键。
echo '<input type="hidden" name="values" value= "'.implode(',', array_values($array)).'">';
echo '<input type="hidden" name="keys" value= "'.implode(',', array_keys($array)).'">';
在test.php
$arrayValues = explode(',', $_POST['values']);
$arrayKeys = explode(',', $_POST['keys']);
$yourFinalArray = array_combine($arrayKeys, $arrayValues);
答案 1 :(得分:0)
使用例如json_encode
和json_decode
函数对数组进行编码和解码。
函数implode
忽略数组键。
答案 2 :(得分:0)
其实有些不对劲。 Yuo正在爆炸阵列,而你应该将其摧毁。此外,您无法将baz
作为键检索,因为它是一个值。它的关键是0,看一下这个样本
$array = array('foo' => 'bar', 'baz', 'bat' => 2);
$arry = implode(',', $array_key($array));
echo $arra;
这将在逗号分隔值列表中转换数组的键
foo,0,bat
另一方面,如果您将从您的帖子数组中获取值,您将获得
$array = array('foo' => 'bar', 'baz', 'bat' => 2);
$arry = implode(',', $array_values($array));
echo $arra;
输出
bar,baz,2
//^ as you can see baz it's between values
答案 3 :(得分:0)
请勿在您的数组中使用’
,使用'
或"
,我会看到它看起来像这样 - &gt; array(3) { ["foo"]=> string(3) "bar" [0]=> string(3) "baz" ["bat"]=> int(2) }
答案 4 :(得分:0)
您可以以表格形式发送数组
page1.php中
$array = array('foo' => 'bar', 'baz', 'bat' => 2);
echo "<form method='POST' action='page2.php' onsubmit='return validateForm()' >";
foreach($array as $key=>$value) {
echo '<input type="hidden" name="array[]" value = "'.$key."|".$value.'">';
}
echo "<input type='submit' name='Submit' value='submit' />";
echo '</form>';
?>
使page2.php
<?php
$array = array();
foreach($_POST['array'] as $value) {
$a = explode("|",$value);
$array[$a[0]] = $a[1];
}
print_r($array);
?>
输出:
Array
(
[foo] => bar
[0] => baz
[bat] => 2
)