0

我们想将隐藏输入字段中的 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>
4

6 回答 6

1

您可以有多个具有相同名称的隐藏输入,如果名称包含方括号,PHP 会将它们解析为数组。有关更多详细信息,请参阅此答案:具有多个同名隐藏控件元素的 HTML 表单

例如:

    <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>
于 2019-06-19T10:16:05.140 回答
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>

您可以使用implodePHP 的功能。要在 php 端再次解码,请使用explodePHP 的函数

于 2019-06-19T10:28:09.757 回答
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'] 等相同的方式在服务器端获取价值

于 2019-06-19T10:06:26.510 回答
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获取数据。代替反序列化

谢谢

于 2019-06-19T11:54:54.067 回答
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>
于 2019-06-19T12:26:58.033 回答
0

最后在尝试了很多方法之后,这个对我有用的方法是使用serialize 和 unserialize

HTML:

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

PHP:

$excel = unserialize($_POST["data"]);
于 2019-06-20T11:19:13.133 回答