2010-02-21 3 views
49

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

ответ

51

Да, PHP поддерживает массивы в качестве переменных сеанса. См. Пример this page.

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

+0

Можете ли вы, пожалуйста, очистить мои сомнения от более поздней части вопроса ..? –

+1

Если вы вернетесь на первую страницу и перейдете ко второй странице (где данные помещаются в сеанс), данные сеанса будут содержать новый набор данных. –

+0

Спасибо, я понял .. :) –

66

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

$_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 файл.

More Info Here

+0

что касается другой части моего вопроса ..? –

+0

@Anurag: Я обновил свой вопрос для вашей второй части вопроса. Спасибо :) – Sarfraz

+0

Спасибо большое ... –

1

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

0
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>