Подтвердить что ты не робот

Массив как переменная сеанса

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

$_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.

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

Ответ 3

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

Ответ 4

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>