Как добавить массив в FormData и получить его на PHP

В этом руководстве мы рассмотрим различные методы добавления массива в FormData и его получения в PHP. Мы рассмотрим несколько подходов, попутно предоставляя разговорные объяснения и примеры кода. К концу этой статьи вы получите четкое представление о том, как обрабатывать данные массива в FormData и обрабатывать их на стороне сервера с помощью PHP.

Метод 1. Сериализация массива
Первый метод включает сериализацию массива и добавление его к FormData с помощью метода append(). На стороне PHP мы десериализуем данные, чтобы получить исходный массив.

Код JavaScript:

const data = {
  names: ['John', 'Jane', 'Alice'],
  ages: [25, 30, 28]
};
const formData = new FormData();
formData.append('arrayData', JSON.stringify(data));
fetch('your-php-script.php', {
  method: 'POST',
  body: formData
});

Код PHP:

$arrayData = json_decode($_POST['arrayData'], true);
var_dump($arrayData['names']);  // Output: ['John', 'Jane', 'Alice']
var_dump($arrayData['ages']);   // Output: [25, 30, 28]

Метод 2: использование индексации массива.
В этом методе мы добавляем отдельные элементы массива к объекту FormData, используя индексацию массива. На стороне PHP мы будем перебирать индексированные ключи, чтобы получить значения массива.

Код JavaScript:

const names = ['John', 'Jane', 'Alice'];
const ages = [25, 30, 28];
const formData = new FormData();
names.forEach((name, index) => {
  formData.append(`names[${index}]`, name);
});
ages.forEach((age, index) => {
  formData.append(`ages[${index}]`, age);
});
fetch('your-php-script.php', {
  method: 'POST',
  body: formData
});

PHP-код:

$names = [];
$ages = [];
foreach ($_POST as $key => $value) {
  if (preg_match('/^names\[\d+\]$/', $key)) {
    $names[] = $value;
  } elseif (preg_match('/^ages\[\d+\]$/', $key)) {
    $ages[] = $value;
  }
}
var_dump($names);  // Output: ['John', 'Jane', 'Alice']
var_dump($ages);   // Output: [25, 30, 28]

Метод 3: использование метода FormData.getAll()
В этом методе мы будем использовать метод getAll(), предоставляемый объектом FormData, для получения всех значений, связанных с определенным ключом.

Код JavaScript:

const names = ['John', 'Jane', 'Alice'];
const ages = [25, 30, 28];
const formData = new FormData();
names.forEach((name, index) => {
  formData.append('names[]', name);
});
ages.forEach((age, index) => {
  formData.append('ages[]', age);
});
fetch('your-php-script.php', {
  method: 'POST',
  body: formData
});

Код PHP:

$names = $_POST['names'];
$ages = $_POST['ages'];
var_dump($names);  // Output: ['John', 'Jane', 'Alice']
var_dump($ages);   // Output: [25, 30, 28]

В этом руководстве мы рассмотрели различные методы добавления массива в FormData и его получения в PHP. Мы рассмотрели сериализацию, индексацию массива и использование метода getAll(). В зависимости от ваших требований вы можете выбрать метод, который соответствует вашим потребностям. С помощью этих методов вы можете эффективно обрабатывать данные массива в FormData и обрабатывать их на стороне сервера с помощью PHP.

Не забудьте настроить URL-адрес your-php-script.php в коде JavaScript в соответствии с вашим серверным скриптом.