Как сохранить массив в переменную сеанса в php

/ / возвращает 10 вопросов из таблицы вопросов

$result = mysqli_query($con,"SELECT question FROM questions ORDER BY rand() LIMIT 10' ");
while($row = mysqli_fetch_row($result))
{
$que[]=$row[0];
}  

теперь мне нужно сохранить весь этот набор $que[] в переменной сеанса. (Я. е 10 вопросов)

что-то вроде этого

$_SESSION['question'] = $que[]; 

$my_array[] = $_SESSION['question'];

, так что $my_array[0] возвращает первый вопрос, $my_array[1] возвращает вторые вопросы и тому подобное.

(Thanx для помощи заранее)

3 ответов


назначение

$_SESSION['question'] = $que; 

print_r($_SESSION['question'][0]); даст вам первый вопрос.


вы почти правы, вам нужно только [] при добавлении в массив.

$_SESSION['question'] = $que;

убедитесь, что у вас есть сеанс, идущий первым, поместив это в верхней части вашего скрипта начнет сеанс, если он еще не существует:

if( !isset( $_SESSION ) ) {
    session_start();
}

чтобы вытащить его обратно:

$array = $_SESSION['question'];  //Assigns session var to $array
print_r($array);                 //Prints array - Cannot use echo with arrays


Заключительное Дополнение

для итерации по массиву обычно можно использовать for или foreach. Для заявлений действительно работает только тогда, когда ваш ключи массива являются дополнительными (0, 1, 2, 3 и т. д.) без каких-либо пробелов.

for( $x = 0, $max = count($array); $x < $max; ++$x ) {
    echo $array[$x];
}

foreach( $array as &$value ) {
    echo $value;
}

оба были написаны в виду для производительности. Очень важно знать, что при использовании ссылка (&$value, обратите внимание на&), что при редактировании ссылки изменяется исходное значение. Если ссылка не используется, создается копия значения. Так например:

//Sample Array
$array = array( '0' => 5, '1' => 10 );


//By Reference
foreach( $array as &$value ) {
    $value += 2;               //Add 2 to each value
    echo $value;               //Echos 7 and 12, respectively
}
print_r( $array );  //Now equals array( '0' => 7, '1' => 12 )


//Normal Method
foreach( $array as $value ) {
    $value += 2;               //Add 2 to each value
    echo $value;               //Echos 7 and 12, respectively            
}
print_r( $array );  //Still equals array( '0' => 5, '1' => 10 )

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


использовать

session_start();
 $_SESSION['question'] = $que;
&que = array(an array of your 10m question s);

когда вы хотите позвонить на другую страницу, чтобы получить строку ваших вопросов, используйте

while (list($key, $value) = each($_SESSION)) {
#Echo the questions using $key
    echo "Here is a list of your questions";
    echo "<br/>";
    while (list($key2, $value2) = each($_SESSION)) {
#$value2 show's name for the indicated ID
#$key2 refers to the ID
         echo "<br/>";
        echo "Question: ".$value2." ";
        echo "<br/>";
    }
    echo "<br/>"; 
}

или вы также можете использовать

print_r;