Досягти цього в основному можна двома способами:
Серіалізувати дані певним чином:
$postvalue = serialize($array);
$array = unserialize($_POST['result'];
А потім можна десериалізувати опубліковані значення за допомогою unserialize($postvalue). Додаткову інформацію про це можна знайти тут у посібниках PHP .
Альтернативно, ви можете використовувати функції json_encode()і json_decode()для отримання серіалізованого рядка у форматі JSON. Ви навіть можете зменшити передані дані за допомогою gzcompress()(зверніть увагу, що це вимагає високої продуктивності) і захистити передані дані за допомогою base64_encode()(щоб ваші дані вижили в не 8-бітних чистих транспортних шарах) Це може виглядати так:
$postvalue = base64_encode(json_encode($array));
$array = json_decode(base64_decode($_POST['result']));
Нерекомендований спосіб серіалізації даних (але дуже дешевий у продуктивності) - це просто використовувати implode()у своєму масиві, щоб отримати рядок із усіма значеннями, розділеними деяким заданим символом. На стороні сервера ви можете отримати масив за допомогою explode(). Але зауважте, що ви не повинні використовувати символ для розділення, що трапляється у значеннях масиву (або потім його уникати), і що ви не можете передавати ключі масиву цим методом.
Використовуйте властивості спеціальних іменованих елементів введення:
$postvalue = "";
foreach ($array as $v) {
$postvalue .= '<input type="hidden" name="result[]" value="' .$v. '" />';
}
Ось так ви отримуєте весь масив у $_POST['result']змінній, якщо форма надіслана. Зверніть увагу, що це не передає ключі масиву. Однак ви можете досягти цього, використовуючи result[$key]як ім'я кожного поля.
Кожен із цих методів отримав свої переваги та недоліки. Те, що ви використовуєте, в основному залежить від того, наскільки великим буде ваш масив, оскільки вам слід спробувати надіслати мінімальну кількість даних за допомогою усіх цих методів.
Інший спосіб досягти цього - зберігати масив у сесії на стороні сервера, а не передавати його на стороні клієнта. Таким чином, ви можете отримати доступ до масиву через $_SESSIONзмінну і не потрібно нічого передавати через форму. Для цього подивіться основний приклад використання сесій на php.net .