php - PHP多输入类型文本和输入类型文件形式输出到数组名称和带有数组序列的值
问题描述
我想使用数组制作一个动态 HTML 表单,但是每当我填写表单时,输出都不会得到带有值的数组序列。我在使用时发现了这个问题,input type="file"
但如果我只使用文本字段input type="text"
,它可以正常工作..
这是我的代码textfile.php
<?php
if(isset($_POST['submit'])) {
if(isset($_POST['data_value'])) {
foreach ($_POST['data_value'] as $data_name => $data_value) {
echo $_POST['data_name'][$data_name].' - '.$data_value."<br>";
}
}
$textQnty = empty($_POST['data_value'])? 0: count($_POST['data_value']);
if(isset($_FILES['data_value'])) {
foreach ($_FILES['data_value']['name'] as $data_name => $data_value) {
$file_name = $_FILES['data_value']['name'][$data_name];
echo $_POST['data_name'][$data_name + $textQnty].' - '.$file_name."<br>";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test File</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<?php
$data_array = array('text', 'file2', 'file', 'text2');
foreach($data_array as $data_name) { ?>
<input type="hidden" name="data_name[]" value="<?php echo $data_name; ?>">
<?php
if(strpos($data_name,'text') !== false){ ?> <input name="data_value[]" type="text" /> <?php }
if(strpos($data_name,'file') !== false){ ?> <input name="data_value[]" type="file" /> <?php }
} ?>
<input type="submit" name="submit" value="Add" />
</form>
</body>
</html>
这是我的输出方式(需要数组序列)
Array Sequence - array('text', 'file2', 'file', 'text2');
But Result -
text - First of Text input Data
file2 - Second of Text input Data
file - First of file input Data
text2 - Second of file input Data
我需要这样的输出(根据数组顺序)
text - First of Text input Data
file2 - First of file input Data
file - Second of file input Data
text2 - Second of Text input Data
我的代码工作正常我只需要一些基本的改进。谢谢!
解决方案
基于$data_array
,您可以按顺序显示提交的值。
$data_array = array('text', 'file2', 'file', 'text2');
if(isset($_POST['submit'])) {
$text = 0;
$file = 0;
foreach ($data_array as $data) {
if(strpos($data, 'text') !== false) {
echo $_POST['data_value'][$text]."<br>";
$text++;
} else {
echo $_FILES['data_value']['name'][$file]."<br>";
$file++;
}
}
}
推荐阅读
- android - 如何从 Firebase 中删除颤动的卡片?
- node.js - Firebase 上的 Node.js 后端应用程序,用于访问 Azure Active Directory 用户
- powershell - 通过递归获取目录大小适用于一个路径而不是其他路径
- python - 创建附加表以支持自定义 Django 模型
- c# - 将一个模型映射到另一个模型
- django - django rest framework 用于路由到数据集的特定财务报表的额外操作
- node.js - NextJS 在 next.config.js 文件中定义后重定向不重定向 url
- angular - 使用 nativescript "tns create my-tab-ng --template tns-template-tab-navigation-ng" 模板后没有 webpack.config.js 文件
- r - 数字百分比分布的区间查询
- uwp - 如何分析 uwp windows 10 中的崩溃