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

$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}'> 

как он будет принят?

как я должен обрабатывать его на вызываемой странице?

благодаря !!

Related of "как передать массив в GET в PHP?"

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

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

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

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

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

Используйте функцию serialize и unserialize PHP. Эта функция предоставляет вам сохраняемую (строчную) версию типа массива. Более подробную информацию об использовании читайте http://php.net/manual/en/function.serialize.php и http://www.php.net/manual/en/function.unserialize.php.

Еще один вариант (даже красивый, я бы сказал):

 <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. Я бы не рекомендовал отправлять его с сериализацией, поскольку выход этой функции может стать довольно большим, а длина или URL ограничены.

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

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

Вы можете использовать сериализацию и сериализацию вместе с 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']); ?> 

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

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"]); ?> 

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

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

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

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

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

а затем на почтовую обработку:

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

сначала выполните serialize() вашего массива и передайте это через. Затем вызовите unserialize() . http://ie.php.net/serialize

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

 session_start(); 

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

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

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