【问题标题】:PHP Multiple Input type Text and input type File form output to array name and Value with array SequencePHP多输入类型文本和输入类型文件形式输出到数组名称和带有数组序列的值
【发布时间】:2019-08-09 13:38:09
【问题描述】:

我想使用数组制作一个动态 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

我的代码运行良好,我只需要一些基本的改进。谢谢!

【问题讨论】:

  • 使用name=data_value[]对你来说重要吗?
  • name=data_value[] 是的,这对我很重要

标签: php arrays multidimensional-array forms


【解决方案1】:

基于$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++;
        }
    }
}

【讨论】:

  • 感谢您的回答,但我需要data_name 这对我来说也是最重要的..
猜你喜欢
  • 2014-12-24
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多