строке как передать массив в GET в PHP?




передача массива get php (8)

Другой вариант (даже симпатичный, я бы сказал):

<form method='POST'>
  <input type="hidden" name="idArray[]" value="1" />
  <input type="hidden" name="idArray[]" value="2" />
  <input type="hidden" name="idArray[]" value="3" />
  <input type="hidden" name="idArray[]" value="4" />
</form>

Но, конечно, он отправляется как POST. Я бы не рекомендовал отправлять его с serialize, поскольку выходные данные этой функции могут быть довольно большими, а длина или URL-адрес ограничены.

$idArray = array(1,2,3,4);

я могу написать эту строку в HTML?

<form method='POST' action='{$_SERVER['PHP_SELF']}?arr={$idArray}'>

или я должен написать:

<form method='POST' action='{$_SERVER['PHP_SELF']}?arr[]={$idArray}'>

как это пройдет?

как мне справиться с этим на вызываемой странице?

Спасибо !!


Просто используйте explode() и передайте его значение. Вы можете получить массив обратно с помощью implode() .

Примечание. Выберите разделитель в соответствии с типом содержимого, которого нет в вашем массиве. Например, Если вы уверены, что в вашем массиве не будет запятых (,), выберите запятую в качестве разделителя.


Вы можете использовать serialize и & serialize вместе с urlencode, например

При отправке вы можете отправить их так:

<?php
$array1 = Array(["key1"]=>"value1",["key2"]=>"value2");
$array2 = Array(["key1"]=>"value1",["key2"]=>"value2");
$data1="textdata";

$urlPortion= '&array1='.urlencode(serialize($array1)).
             '&array2='.urlencode(serialize($array2)).
             '&data1='.urlencode(serialize($data1));
//Full URL:
$fullUrl='http://localhost/?somevariable=somevalue'.$urlPortion
?>

При получении вы можете получить к ним доступ как:

<?php
$destArray1=unserialize($_GET['array1']);
$destArray2=unserialize($_GET['array2']);
$destData1=unserialize($_GET['data1']);
?>

И вуаля, вы можете прикрепить этот URL-адрес на запрос AJAX или обычную страницу браузера.


В указанном вами конкретном случае я бы поместил массив в строку, а затем взорвал его при публикации формы.

$str = rawurlencode(implode(",",$idArray));

<form method='POST' action='{$_SERVER['PHP_SELF']}?arr={$str}'>

а затем на пост-обработку:

 $idArray = explode(",",rawurldecode($_POST['arr']));

Если вы хотите передать массив в качестве параметра, вам нужно будет добавить параметр для каждого элемента. Ваша строка запроса станет:

?arr[]=1&arr[]=2&arr[]=3&arr[]=4

Как написали другие, вы также можете сериализовать и десериализовать массив.

Но нужно ли вам снова отправлять данные клиенту? Похоже, вам просто нужен способ сохранить данные между запросами .

В этом случае лучше использовать sessions(docs) . Это также более безопасно, так как в противном случае клиент может изменить данные.


Используйте функцию parse_str

$str = "first=value&arr[]=foo+bar&arr[]=baz"; 
parse_str($str); 
echo $first;  

Это старая тема, но нет реального ответа.


http://snipplr.com/view/4444/passing-an-array-through-get-request/

$str=serialize($idArray);
<form method='POST' action='{$_SERVER['PHP_SELF']}?arr=$str'>

Чтобы получить данные на странице получения, вам сначала необходимо:

<?PHP 
 $idArray = unserialize($_GET["arr"]); 
?>

Сессия - намного более безопасный и чистый способ сделать это. Начните сессию с:

session_start();

Затем добавьте ваш сериализованный массив в качестве переменной сеанса следующим образом:

$_SESSION["venue"] = serialize($venue);

Просто вызовите переменную сеанса, когда вам это нужно.





arrays