我们希望将隐藏输入字段中的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>
答案 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"]);