【问题标题】:Populate the value of an input field with $_FILES['field']['name'];使用 $_FILES['field']['name']; 填充输入字段的值
【发布时间】:2011-12-07 08:39:00
【问题描述】:

我需要在一个数组中检索上传输入字段的值,让我解释一下:

我有这些输入字段:

<input type='text' name='field["+ j++ +"]' value='' data-kind='title' />
<input type='file' name='field["+ j++ +"]' value='' data-kind='image' />
<input type='text' name='field["+ j++ +"]' value='' data-kind='title' />
<input type='file' name='field["+ j++ +"]' value='' data-kind='image' />

我从这些字段中打印_r 字段数组并得到它:

Array
(
    [0] => title 1
    [2] => title 2
)

而不是:

Array
(
    [0] => title 1
    [1] => image1.jpg
    [2] => title 2
    [3] => image2.jpg
)

我需要在我的数组中包含我的文件名,我怎样才能拥有第二个数组?

我尝试过合并,但是我需要保留数组中每个字段的位置,就像表单中每个输入的顺序一样(例如:如果上传字段是在第一个生成的我需要将该信息保存在数组中的表单位置([0] => image1.jpg [1] => title1 等等)

任何会帮助将非常非常感激!几天以来我一直被困在这上面:(

【问题讨论】:

    标签: php jquery arrays input upload


    【解决方案1】:

    如果您为输入提供相同的名称,则它们在提交时将简单地相互覆盖。现在你所有的输入都命名为field["+ j++ +"]

    听起来您正在生成输入标签,那么为什么不只生成一个多维数组来保持您想要的顺序呢?像这样的:

    <input type='text' name='field["+ j++ +"][0]' value='' data-kind='title' />
    <input type='file' name='field["+ j++ +"][1]' value='' data-kind='image' />
    <input type='text' name='field["+ j++ +"][2]' value='' data-kind='title' />
    <input type='file' name='field["+ j++ +"][3]' value='' data-kind='image' />
    

    【讨论】:

    • 感谢您的回答,我不能这样做,因为订单是动态的,当我拖放输入元素时,它有一个特定的位置,该位置在提交后存储在另一个数组中。
    【解决方案2】:

    只需给它们单独的名称,然后在循环访问 $_FILE/$_POST 元素时引用它们。

    <input type='text' name='title[]' value='' data-kind='title' />
    <input type='file' name='imgfile[]' value='' data-kind='image' />
    <input type='text' name='title[]' value='' data-kind='title' />
    <input type='file' name='imgfile[]' value='' data-kind='image' />
    

    然后在你的 PHP 中

    foreach($_FILES['imgfile']['name'] as $key=>$val){
        echo($key." = ".$val."<br>");
        echo($key." = ".$_POST["title"][$key]."<br><br>");
    }
    

    【讨论】:

    • .$_POST["imgfile"] 是 $_FILES['imgfile'] 吗?它不起作用:“0 等的未定义索引”
    • $_POST 循环就是一个例子。我已修改示例以使用 $_FILES。
    【解决方案3】:

    我猜你已经尝试过array_mergeDocs,如果它们是数字,它将改变键。相反,您可以使用array union operator +Docs,它适用于编号键并且不会更改它们:

    $field = 'field';
    $fields = $_POST[$field] + $_FILES[$field]['name'];
    ksort($fields);
    

    这将为您提供所需的内容。 Demo.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2018-06-06
      相关资源
      最近更新 更多