Массив как переменная сеанса - PullRequest
63 голосов
/ 21 февраля 2010

Можно ли сделать массив переменной сеанса в PHP?

Ситуация такова, что у меня есть таблица (страница 1) с несколькими ячейками, имеющими ссылку на определенную страницу. На следующей странице будет список имен (страница 2, которую я хочу сохранить в массиве сеансов) с соответствующими флажками. При отправке этой формы она приведет к странице транзакции (стр. 3, где значения размещенных флажков хранятся в базе данных для соответствующих имен). Теперь, если я вернусь на первую страницу и нажму на другую ячейку, будет ли массив сессии содержать новый список имен или старые?

Ответы [ 4 ]

72 голосов
/ 21 февраля 2010

Да, вы можете помещать массивы в сеансы, например:

$_SESSION['name_here'] = $your_array;

Теперь вы можете использовать $_SESSION['name_here'] на любой странице, которую хотите, но убедитесь, что вы вставили строку session_start() перед использованием любых функций сеанса, поэтому код должен выглядеть примерно так:

 session_start();
 $_SESSION['name_here'] = $your_array;

Возможный пример:

 session_start();
 $_SESSION['name_here'] = $_POST;

Теперь вы можете получить значения полей на любой странице, например так:

 echo $_SESSION['name_here']['field_name'];

Что касается второй части вашего вопроса, переменные сеанса остаются там, пока вы не назначите другие данные массива:

 $_SESSION['name_here'] = $your_array;

Время жизни сессии устанавливается в файл php.ini .

Подробнее здесь

66 голосов
/ 21 февраля 2010

Да, PHP поддерживает массивы в качестве переменных сеанса. См. эту страницу для примера.

Что касается вашего второго вопроса: после того, как вы установите переменную сеанса, она останется такой же, пока вы не измените ее или unset. Поэтому, если 3-я страница не изменит переменную сеанса, она останется прежней, пока 2-я страница не изменит ее снова.

2 голосов
/ 03 октября 2017
session_start();          //php part
$_SESSION['student']=array();
$student_name=$_POST['student_name']; //student_name form field name
$student_city=$_POST['city_id'];   //city_id form field name
array_push($_SESSION['student'],$student_name,$student_city);   
//print_r($_SESSION['student']);


<table class="table">     //html part
    <tr>
      <th>Name</th>
      <th>City</th>
    </tr>

    <tr>
     <?php for($i = 0 ; $i < count($_SESSION['student']) ; $i++) {
     echo '<td>'.$_SESSION['student'][$i].'</td>';
     }  ?>
    </tr>
</table>
1 голос
/ 09 ноября 2014

Сначала измените массив на строку с помощью функции implode (). Например, $number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number); затем передать строку в сессию. например, $_SESSION['string']=$stringofnumber; поэтому, когда вы переходите на страницу, где вы хотите использовать массив, просто взорвите свою строку. например $number=explode("|", $_SESSION['string']); наконец, число - это ваш массив, но не забудьте запустить массив на каждой странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...