#php #jquery #arrays #input #upload
#php #jquery #массивы #ввод #загрузка
Вопрос:
Мне нужно получить в массиве значение поля ввода для загрузки, позвольте мне объяснить :
У меня есть эти поля ввода :
<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' />
Я печатаю массив полей из этих полей и получаю это :
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 и так далее)
Любая помощь была бы очень признательна!! Я застрял на этом несколько дней: (
Ответ №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' />
Комментарии:
1. Спасибо за ответ, я не могу этого сделать, потому что порядок является динамическим, когда я перетаскиваю входной элемент, он имеет определенную позицию, которая сохраняется в другом массиве после отправки.
Ответ №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>");
}
Комментарии:
1. .$_POST[«imgfile»] — это $_FILES[‘imgfile’] ? Это не работает: «неопределенный индекс для 0 и так далее»
2. Примером был цикл $_POST. Я пересмотрел пример, чтобы использовать $_FILES .
Ответ №3:
Я думаю, вы пробовали array_merge
документы, которые изменят ключи, если они числовые. Вместо этого вы можете использовать документы оператора объединения массивов
, которые хорошо работают с нумерованными ключами и не меняют их:
$field = 'field';
$fields = $_POST[$field] $_FILES[$field]['name'];
ksort($fields);
Это даст вам то, что вы ищете. ДЕМОНСТРАЦИЯ.