将php多维数组从html隐藏字段传递到php

时间:2019-06-19 09:47:58

标签: php html

我们希望将隐藏输入字段中的php数组从html传递到php。我们如何将数组从html传递到php

    <?php 
        $data = array(
         array("Volvo",22,18),
         array("BMW",15,13),
         array("Saab",5,2),
         array("Land Rover",17,15)
       );
    ?>


    <form name="excel_upload" id="excel_upload" action="" method="post">
    <input type="hidden" name="data[]"  >
    <input type="submit">
    </form>

6 个答案:

答案 0 :(得分:1)

您可以有多个具有相同名称的隐藏输入,如果名称包含方括号,PHP会将其解析为数组。有关更多详细信息,请参见以下答案:HTML form with multiple hidden control elements of the same name

例如:

    <form name="excel_upload" id="excel_upload" action="" method="post">
    <input type="hidden" name="data[]" value="Volvo" >
    <input type="hidden" name="data[]" value="BMW" >
    <input type="hidden" name="data[]" value="Toyota" >
    <input type="submit">
    </form>

答案 1 :(得分:1)

 <?php 
 $cars = array("Volvo", "BMW", "Toyota");
 $cars_string = implode(',',$cars);
 ?>

<form name="excel_upload" id="excel_upload" action="" method="post">
    <input type="hidden" name="data" value="<?php echo $cars_string?>"  >
    <input type="submit">
</form>

您可以使用PHP的implode函数。要再次在php端对其进行解码,请使用PHP的explode函数

答案 2 :(得分:0)

您无法按原样发送数组,但是可以使用类似的东西实现相同的事情

<form name="excel_upload" id="excel_upload" action="" method="post">
    <?php 
       $i = 1;
       foreach($cars as $car){

    ?>  
    <input type="hidden" name="car<?php echo $i; ?>" value="<?php $car; ?>" >
    <?php
          $i++;
      }
    ?>
    <input type="submit">
</form>

您可以像$ _POST ['car1']等一样在服务器端获得价值

答案 3 :(得分:0)

从表单传递数组的最佳方法是以序列化格式发送。

<form name="excel_upload" id="excel_upload" action="" method="post">
<input type="hidden" name="data" value="<?php echo serialize($cars); ?>" >
<input type="submit">
</form>

一旦表单过帐,您可以反序列化过帐的值。

<?php
  $data  = isset($_POST['cars']) ? unserialize($_POST['cars']) : [];
?>

您也可以使用 json_encode 代替 serialize ,并通过 json_decode 获取数据。代替反序列化

谢谢

答案 4 :(得分:0)

尝试一下:

<!DOCTYPE html>
<html lang="en">
    <?php
    $data = array(
        array("Volvo", 22, 18),
        array("BMW", 15, 13),
        array("Saab", 5, 2),
        array("Land Rover", 17, 15)
    );

    if (isset($_POST['submit'])) {
        print_r($_POST['data']);
    }
    ?>
    <body>
        <form method="post" action="">
            <?php
            foreach ($data as $key => $val) {
                foreach ($val as $k => $v) {
                    ?>
                    <input type="hidden" name="data[<?php echo $key; ?>][<?php echo $k ?>]" value="<?php echo $v; ?>">
                    <?php
                    echo "<br>";
                }
            }
            ?>
            <input type="submit" name="submit">
        </form>
    </body>
</body>
</html>

答案 5 :(得分:0)

最后,在尝试了很多方法之后,这个人对我使用了序列化和反序列化

HTML:

<input type="hidden" name="data" value="<?php echo htmlspecialchars(serialize($data)) ?>">

PHP:

$excel = unserialize($_POST["data"]);