是否有(智能)方式通过Web表单发送数组(完好无损!)?

时间:2019-01-25 14:23:55

标签: php arrays forms

在PHP中,我有一个数组。我想将数组中的所有值发送到下一页(result.php)。当我在$ _POST中收到值时,是否可以照原样在数组中获取它们? (或者我只能单独或连接获取数组的值,然后再重新生成数组?)

我尝试了以下代码,但是它仅连接数组中的值,因此并不令人满意。

请让我知道哪种方法都是最佳实践。当然,我更喜欢保持原始数组不变!

谢谢!

<form class="form_container validationForm" action="result.php" method="post">
<input type="hidden" name="targetobject[]" value="
<?php $postvalue = array("Volvo", "BMW", "Toyota"););
foreach($postvalue as $value){echo $value;}
?>
">
<input type="text" class="form-control validationInput" name="search" placeholder="Type a search keyword"><br><button class="btn btn-primary" type="submit">Search</button></div></form>

//The following is result.php
<?php $targetobject = $_POST['targetobject'];
 echo var_dump($targetobject);
?>

array(3){   [0] =>   string(5)“沃尔沃”   [1] =>   字符串(3)“宝马”   [2] =>   字符串(6)“丰田” }

3 个答案:

答案 0 :(得分:1)

您需要将每个值放在一个单独的隐藏input中,其名称包含[]。试试这个:

 <form class="form_container validationForm" action="result.php" method="post">

 <?php $postvalue = ["Volvo", "BMW", "Toyota"]; ?>
 <?php foreach ($postvalue as $val) : ?>
     <input type="hidden" name="targetobject[]" value="<?php echo $value; ?>">
 <?php endforeach; ?>  

 </form>

 <input type="text" class="form-control validationInput" name="search" placeholder="Type a search keyword"><br><button class="btn btn-primary" type="submit">Search</button></div></form>

 //The following is result.php
 <?php $targetobject = $_POST['targetobject'];
  echo var_dump($targetobject);
 ?>

答案 1 :(得分:1)

或字母较少:

<?php $postvalue = array("Volvo", "BMW", "Toyota"); ?>

<form class="form_container validationForm" action="result.php" method="post">
<input type="hidden" name="targetobject" value='<?=json_encode( $postvalue ); ?>'>

<input type="text" class="form-control validationInput" name="search" placeholder="Type a search keyword"><br>
<button class="btn btn-primary" type="submit">Search</button>
</form>

//The following is result.php
<?php 
 $targetobject = json_decode( $_POST['targetobject'], $assoc = true );
 echo var_dump($targetobject);
?>

答案 2 :(得分:1)

好吧,如果您检查上述建议的HTTP结果,您会发现它们通过重复 POST变量名以一种有组织的方式起作用。而且这种方法肯定没有错。

另一种实现方法是将数据 JSON编码作为单个字段的值发送。这种方法允许对真正任意的数据结构进行编码和表示。本质上,尽管不完全是“经典AJAX”。

所以,“选择是你的。”