Передача массива методом GET
Решение:
Передать массив методом GET на другую страницу можно через параметры строки запроса. Запрос должен быть вида: 2.php?arr[]=value1&arr[]=value2&arr[]=value3. . Где value1 — это первый элемент массива, value2 — это второй элемент массива и т.д.
Файл 2.php
// Распечатываем массив echo ""; print_r($_GET); echo "
";
implode — Объединяет элементы массива в строку.
string implode( string glue, array pieces ) Возвращает строку, полученную объединением строковых представлений элементов массива pieces, со вставкой строки glue между соседними элементами.
Как передать массив в get запросе
(0) Если нужно передавать массив, то нужно делать POST запрос. И в теле запроса уже передавать что хочешь.
Если в документации написано, что используется GET-запрос, то все равно можно сделать POST запрос?
(0) приведи строку запроса.
Иногда сервер понимает так: ?filter[ids]=1&filter[ids]=2
(4) Ну. Тогда в документации должно быть указано за то «как в запросе GET указать параметр запроса типа массив?»
не указано это в документации. Написано только тип параметра массив
(3) Можно и через GET, если массив не большой и вместится в 4кб
(4) Вряд ли
(10) что смысл?
(11) в запросе GET указать параметр запроса типа массив
(12) в документации указано, что запрос GET и параметр массив
можеть быть как
&filter=[1, 2, 3]
(13) ты к 1с подключаешься?
нет, не к 1с. Надо с сайта получить данные
(16) АдресСтраницы = «твой сайт/hs/твой хттп сервис /твой массив
(16) массивы я помню в пхп легко передаются в параметрах, только их нужно правильно создать
(13) приведи фрагмент документации или ссылку на всю
(16) Ты главное не говори что за сайт и какой запрос ты хочешь отправить
Фильтр = Новый Массив;
Фильтр.Добавить(1);
Фильтр.Добавить(3);
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить(«filter», Фильтр);
Как передать массив в get запросе
В прошлых темах была рассмотрена отправка на сервер отдельных значений. Однако отправка набора значений, то есть массивов в PHP может вызвать некоторые сложности. Рассмотрим, как можно отправить на сервер и соответственно получить на сервере массивы данных.
Например, определим следующий файл users.php :
echo "В массиве " . count($users) . " элементa/ов
"; foreach($users as $user) echo "$user
"; ?>
В данном случае мы предполагаем, что параметр «users», который передается в запросе типа GET, будет представлять массив. И соответствено мы сможем получить из него данные.
Чтобы передать массив этому скрипту, обратимся к нему со следующим запросом:
http://localhost/users.php?users[]=Tom&users[]=Bob&users[]=Sam
Чтобы определить параметр строки запроса как массив, после названия параметра указываются квадраные скобки []. Затем мы можем присвоить некоторое значение: users[]=Tom . И сколько раз подобным образом будет присвоено значений, столько значений и будет в массиве. Все значения, как и обычно, отделяются амперсандом. Так, в данном случае в массив передаются три значения.
Подобным образом мы можем отправлять данные в запросе POST из формы. Например, определим следующий скрипт:
METANIT.COM "; foreach($users as $user) echo "$user
"; > ?>Форма ввода данных
User 1:
User 2:
User 3:
Как известно, название ключа передаваемых на сервер данных соответствует значению атрибута name у элемента формы. И чтобы указать, что какое-то поле ввода будет поставлять значение для массива, у атрибут name поля ввода в качестве значения принимает название массива с квадратными скобками:
Соответственно, сколько полей ввода с одним и тем же именем массива мы укажем, столько значений мы сможем передать на сервер. Так, в данном случае на сервер передается три значения в массиве users:
Причем данный принцип применяется и к другим типам полей ввода формы html.
При этом в примерах выше передавался обычный массив, каждый элемент которого в качестве ключа имеет числовой индекс. Соотвенно, используя индекс, мы можем получить определенный элемент массива:
$firstUser = $_POST["users"][0]; echo $firstUser;
Но также мы можем в элементах формы явным образом указать ключи:
METANIT.COM $secondUser
$thirdUser"; > ?>Форма ввода данных
User 1:
User 2:
User 3:
Например, первое поле добавляет в массив элемент с ключом «first»
Поэтому на сервере мы можем с помощью данного ключа получить соответствующий элемент:
$firstUser = $_POST["users"]["first"];
Как передать массив в строке запроса?
Существует ли стандартный способ передачи массива через строку запроса? Чтобы быть ясным, у меня есть строка запроса с несколькими значениями, одна из которых будет значением массива. Я хочу, чтобы это значение строки запроса обрабатывалось как массив. Я не хочу, чтобы массив был взорван, чтобы он был неотличим от других переменных строки запроса. Кроме того, в соответствии с этим post answer автор предполагает, что поддержка строки запроса для массивов не определена. Это точно? EDIT: Основываясь на ответе @Alex, стандартного способа сделать это не существует, поэтому мое наблюдение — это то, что является простым способом распознать, что параметр, который я читаю, представляет собой массив как в PHP и Javascript? Было бы приемлемо назвать несколько параметров одним и тем же именем, и я узнал бы, что они принадлежат к массиву? Пример:
?myarray=value1&myarray=value2&myarray=value3.
Или это будет плохая практика?
Yarin 05 июнь 2011, в 14:10
Поделиться
Какие рамки вы используете? В некоторых инфраструктурах есть методы, помогающие передавать массивы в строки запросов.
keyboardP 05 июнь 2011, в 13:10
@ keyboardP — PHP и Javascript, в зависимости от варианта использования
Yarin 05 июнь 2011, в 13:31
Почему вы хотите сделать это, когда вы можете просто сделать:? Myarray = значение1, значение2, значение3
Serodis 05 июнь 2011, в 13:32
@seroids: что делать, если он должен пропустить запятые, знаки вопроса, знаки равенства и непечатные символы?