PHP – Как отправить массив на другую страницу?

Я пытаюсь отправить массив на другую страницу.

Раньше я пытался:

  • Чтение файлов mp4 с помощью PHP
  • Как получить реальный IP-адрес от посетителя?
  • «PDOException» с сообщением «SQLSTATE : данные строки, усеченные справа: 0
  • PDO получить данные из базы данных
  • Лучшие методы очистки взломанного сайта без чистой версии?
  • php: сортировка и подсчет экземпляров слов в заданной строке
  • Страница 1

    <input type='hidden' name='input_name' value='<?php print_r($array_name); ?>' /> 

    И страница2

     <?php $passed_array = $_POST['input_name']; ?> 

    Теперь как я могу сделать $passed_array как массив?

    Или вы знаете какой-либо другой способ решения этой проблемы?

    Спасибо, Майк.

    Изменить: причина, по которой я хочу это сделать, заключается в том, что мне нужно избегать сеансов и файлов cookie.

  • Как получить все после определенного персонажа?
  • Как я могу нарушить внешний цикл с PHP?
  • Что должен знать каждый программист PHP?
  • PHP dom для получения класса тега с несколькими именами класса css
  • Почему mime_content_type () устарел в PHP?
  • Кэш-память через 1 мб альтернативы memcache
  • 8 Solutions collect form web for “PHP – Как отправить массив на другую страницу?”

    Вы можете поместить его в сеанс:

     session_start(); $_SESSION['array_name'] = $array_name; 

    Или, если вы хотите отправить его через форму, вы можете сериализовать его:

     <input type='hidden' name='input_name' value="<?php echo htmlentities(serialize($array_name)); ?>" /> $passed_array = unserialize($_POST['input_name']); 

    Сессия имеет то преимущество, что клиент ее не видит (поэтому не может вмешиваться в нее), и она быстрее, если массив большой. Недостатком является то, что он может запутаться, если у пользователя открыто несколько вкладок.

    Изменить: многие ответы предполагают использование name="input_name[]" . Это не будет работать в общем случае – его нужно будет модифицировать для поддержки ассоциативных массивов и многое изменить для поддержки многомерных массивов (icky!). Гораздо лучше придерживаться сериализации.

    Вы можете сериализовать массив , который превращает его в строку, а затем затем несериализует его, что возвращает его в массив. Как это:

     <input type='hidden' name='input_name' value='<?php serialize($array_name); ?>' /> 

    и на стр. 2:

     <?php $passed_array = unserialize($_POST['input_name']); ?> 

    Я столкнулся с некоторыми проблемами с приведенными выше примерами, когда некоторые значения в моем массиве содержали разрывы строк. Некоторые из моих ценностей также имели символы с иностранных языков, которые htmlentities продолжали прикручивать. Следующим было мое решение.

    На странице, с которой вы хотите передать массив из …

     <INPUT TYPE="hidden" NAME="input_name" VALUE="<?= base64_encode(serialize($array_name)); ?>"> 

    На странице, которая получает массив …

     $array = unserialize(base64_decode($_POST["input_name"])); 

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

     <input type='hidden' name='input_name[]' value='<?php print_r($array_name[0]); ?>' /> <input type='hidden' name='input_name[]' value='<?php print_r($array_name[1]); ?>' /> <input type='hidden' name='input_name[]' value='<?php print_r($array_name[2]); ?>' /> ... 

    Или посмотрите на json или сериализацию.

    Обратите внимание, что для работы с сериализованными массивами вам необходимо использовать POST как метод передачи формы, так как GET имеет ограничение на размер около 1024 символов.

    Я буду использовать сессии, где это возможно.

    Вы можете просто json_encode() массив передать его как строку в запросе POST. Используется много раз. Работает каждый раз, как молодая титта

    Измените input_name на input_name [] в теге ввода, затем поместите тег ввода для каждого значения массива.

    http://phpprogramming.wordpress.com/2007/05/06/php-passing-array-using-hidden-form-element/

     <?php /*arraytransfer.php*/ echo "Array transfer<br>"; $name = array( "mike", "tom" ); $arrCnt = sizeof( $name ); echo "arrCnt: $arrCnt<br>"; echo "<form action=\"arrayrcv2.php\" method=\"POST\">"; echo "<INPUT TYPE=\"HIDDEN\" NAME=\"arrCnt\" VALUE=\"$arrCnt\">"; for( $i=0; $i < $arrCnt; $i++ ) { echo "<INPUT TYPE=\"HIDDEN\" NAME=\"name\" VALUE=\"$name[$i]\"> "; } echo "<input type=\"submit\" name=\"submit\" value=\"Submit me!\" />"; echo "</form>"; ?> <?php /*arrayrecv.php */ $arrCnt = $_POST["arrCnt"]; echo "Receiving data arrCnt = $arrCnt<br>"; $name = array(); for( $i = 0; $i < $arrCnt; $i++ ) { $var = $_POST["name"]; if( $var != "" ) array_push($name, $var ); } print_r($name); ?> 
    PHP is the Best Programming Language in the world.