Заполните значение поля ввода с помощью $ _FILES ['field'] ['name']; - PullRequest
1 голос
/ 14 октября 2011

Мне нужно получить в массиве значение поля ввода загрузки, позвольте мне объяснить:

У меня есть следующие поля ввода:

<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 и т. Д.)

Любая помощь будет очень, очень ценится !! Я застрял, так как малодней на это: (

Ответы [ 3 ]

0 голосов
/ 14 октября 2011

Просто дайте им отдельные имена, а затем ссылайтесь на них, когда вы просматриваете элементы $ _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>");
}
0 голосов
/ 18 октября 2011

Полагаю, вы пробовали array_merge Документы , которые изменят ключи, если они числовые.Вместо этого вы можете использовать оператор объединения массивов + Документы , который хорошо работает с пронумерованными ключами и не меняет их:

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

Это даст вам то, что вы ищете. Демо .

0 голосов
/ 14 октября 2011

Если вы дадите входные данные с одинаковым именем, они будут просто перезаписывать друг друга при отправке.Прямо сейчас все ваши входные данные называются 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' />
...