0

这是我的数组

$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”。

如何获得正确的密钥?

4

5 回答 5

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);
于 2013-06-11T11:14:00.170 回答
0

例如,使用json_encodejson_decode函数对数组进行编码和解码。

函数implode忽略数组键。

于 2013-06-11T10:51:55.950 回答
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

现场样品

于 2013-06-11T10:54:01.117 回答
0
于 2013-06-11T11:46:30.907 回答
0

You can send an array in form submit as

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);
?>

Output:

Array
(
    [foo] => bar
    [0] => baz
    [bat] => 2
)
于 2013-09-23T07:14:57.023 回答