如何将数组存储到php中的会话变量中

Posted

技术标签:

【中文标题】如何将数组存储到php中的会话变量中【英文标题】:How to store an array into a session variable in php 【发布时间】:2013-09-01 04:24:41 【问题描述】:

//从问题表中返回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] 返回第二个问题等等。

(感谢提前帮助)

【问题讨论】:

只是$_SESSION['question'] = $que;没有[] 【参考方案1】:

分配

$_SESSION['question'] = $que; 

print_r($_SESSION['question'][0]);会给你第一个问题。

【讨论】:

使用 echo 代替 print_r 会有什么不同吗?【参考方案2】:

您几乎是正确的,添加到数组时只需要[]

$_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。 For 语句只有在您的数组键是递增的(0、1、2、3 等)且没有任何间隙时才能正常工作。

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


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

两者都是为了性能而编写的。非常重要的是要知道在使用引用时(&amp;$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 )

引用更快,但如果您打算修改值同时保持原始数组不变,则不会。

【讨论】:

我现在如何访问存储在会话中的那些值? 哦,数组没有回声!实际上我希望打印这些元素 $my_array[0], $my_array[1], $my_array[2]....$my_array[10] ?那么如何通过 printf 实现呢?? 当我尝试简单地打印它时显示数组到字符串转换错误! 更新了我的答案,除非您对原始问题有疑问,否则我认为您可能想搜索 Stack Overflow 以获取更多信息,或提出新问题。【参考方案3】:

使用

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;

【讨论】:

以上是关于如何将数组存储到php中的会话变量中的主要内容,如果未能解决你的问题,请参考以下文章

PHP 会话中的数组未完成

如何使用 php 将长数组的值存储到变量中

如何从 PHP 会话数组中删除变量

将两个数组插入到一个mysql表中

将会话值附加到API请求php的现有数组结构

如何将 POST 数据发送到 PHP 中的另一个会话?