$ _SESSION变量只存储一个值

时间:2016-04-03 20:08:38

标签: php session

我有这段代码:

// Values of drop-down lists (cmbPosition)
$studPosition = array();
$i = 0;
foreach ($_SESSION['arrayNamePosition'] as $value) {
    $studPosition[$i] = $_GET[$value];
    $i++;
// Calculates the points for each student in the event
    $points = ($_SESSION['noStudents']+1) - $_GET[$value]; 
    echo $points;
    $_SESSION['points'] = $points;
}

上面的代码循环遍历包含数组的$_SESSION['arrayNamePosition']。每件事都有效,但$_SESSION['points'] = $points;是问题所在(这是包含$points的$ _SESSION变量。)

当我在当前的php表单中回显$points时,它输出:583276

但是当我在一个不同的php形式的while循环中echo $_SESSION['points']时,它只输出存储在$ echo $_SESSION['points']点中的最后一个元素,即6。

如何解决这个问题,以便echo $_SESSION['points']以不同的php格式输出$points的所有值。

注意:我还将echo $_SESSION['points']放在for循环中,但它仍然输出存储在$ points中的最后一个值。例如输出:666666

提前致谢。

3 个答案:

答案 0 :(得分:3)

这是因为$ _SESSION ['points']本身不是一个数组。您应该将您的行更改为:

$_SESSION['points'][] = $points;

答案 1 :(得分:0)

变量点不是数组,因此它只包含最后计算的元素。将其更改为数组,然后将每个值保存为数组中的新元素。

答案 2 :(得分:0)

我猜您的意思是echo $points;的循环输出583276.与$_SESSION['points']类似,它只存储一个值,但每次都打印该值。 我建议进行以下更改:

$studPosition = array();
$i = 0;
$points = '';
foreach ($_SESSION['arrayNamePosition'] as $value) {
  $studPosition[$i] = $_GET[$value];
  $i++;
  $points = $points.(($_SESSION['noStudents']+1) - $_GET[$value]); 
}
echo $points;
$_SESSION['points'] = $points;