PHP 会话数组仅存储在索引 0 中


PHP SESSION Array only storing in index 0

嘿伙计们,这是我正在使用的代码

$ch="s1";
$_SESSION[$ch] = array();
$_SESSION[$ch][] = $_POST['t0'];
$_SESSION[$ch][] = $_POST['t1'];
$_SESSION[$ch][] = $_POST['t2'];
$_SESSION[$ch][] = $_POST['t3'];
$_SESSION[$ch][] = $_POST['t4'];
$_SESSION[$ch][] = $_POST['t5'];
$_SESSION[$ch][] = $_POST['t6'];

但是当我在屏幕上打印会话数据时,$_SESSION['s1'][0]拥有所有其他索引的所有数据,$_SESSION['s1'][1]$_SESSION['s1'][6]都没有显示任何内容。

这是var_dump($_SESSION)的结果;

's1' => array (size=7) 
   0 => string 'All Purpose Horn Anvil A-1t1=Shipping Weight: 900gmst2=Price: € 5.00t3=Quantity: t4= t5=56t6=All Purpose Horn Anvil A-1 Shipping Weight: 900gms Price: € 5.00 Quantity: 56' (length=192) 
    1 => null 
    2 => null 
    3 => null 
    4 => null 
    5 => null 
    6 => null

由于某种原因,POST 索引(即 t0 到 t6)显示在 s1 中。

您可能在

其他地方覆盖该数据,或者只是在打印中出错。

$ch="s1";
$_SESSION[$ch] = array();
$_SESSION[$ch][] = mt_rand(1,200);
$_SESSION[$ch][] = mt_rand(1,200);
$_SESSION[$ch][] = mt_rand(1,200);
$_SESSION[$ch][] = mt_rand(1,200);
$_SESSION[$ch][] = mt_rand(1,200);
$_SESSION[$ch][] = mt_rand(1,200);
$_SESSION[$ch][] = mt_rand(1,200);
print_r( $_SESSION );

输出:

数组 ( [s1] => 数组 ( [0] => 158 [1] => 145 [2] => 110 [3] => 139 [4] => 153 [5] => 183 [6] => 51 ) )

将数据

传递到 POST 是一个错误。在Jquery中,我在变量之间没有"&"的情况下使用它,这导致了问题。

var dataString = 't0=' + txt[0]+ '&t1='+ txt[1] + '&t2='+ txt[2] + '&t3='+ txt[3] + '&t4='+ txt[4] + '&t5='+ txt[5] + '&t6='+ temp;

尝试在等于之前添加一个点:

    $ch="s1";
    $_SESSION[$ch] = array();
    $_SESSION[$ch][] .= $_POST['t0'];
    $_SESSION[$ch][] .= $_POST['t1'];
    $_SESSION[$ch][] .= $_POST['t2'];
    $_SESSION[$ch][] .= $_POST['t3'];
    $_SESSION[$ch][] .= $_POST['t4'];
    $_SESSION[$ch][] .= $_POST['t5'];
    $_SESSION[$ch][] .= $_POST['t6'];

您可以看到此代码在此链接 (3v4l.org/8ZDi9) 上工作:

<?php
    $ch="s1";
    $_SESSION[$ch] = array();
    $_SESSION[$ch][] .= 11;
    $_SESSION[$ch][] .= 22;
    var_dump($_SESSION);
$ch="s1";
$_SESSION[$ch] = array();
$_SESSION[$ch][0] = $_POST['t0'];
$_SESSION[$ch][1] = $_POST['t1'];
$_SESSION[$ch][2] = $_POST['t2'];
$_SESSION[$ch][3] = $_POST['t3'];
$_SESSION[$ch][4] = $_POST['t4'];
$_SESSION[$ch][6] = $_POST['t5'];
$_SESSION[$ch][7] = $_POST['t6'];

或更好

$ch="s1";
$_SESSION[$ch] = array();

for ($i=0; $i<=6; $i++)
{
   $_SESSION[$ch][$i] = $_POST['t'.$i];
}