未设置的多维数组

时间:2014-01-28 00:01:50

标签: php arrays session

我有一段时间了。我有一个多维数组,我存储在一个会话中。

$d1 = array(1,2,3,4);
$d2 = array(1,2,3,4,5,6);
$d3 = array(1,2,3,4,5,6,7,8);
$d4 = array(1,2,3,4,5);
$_SESSION['array1'] = array($d1,$d2,$d3,$d4);

我想要做的是从会话数组1中删除$ d2数组

然而,当我做这样的事情时

unset($_SESSION['array1'][1]); 

你会认为$ _SESSION ['array1']会=数组($ d1,$ d3,$ d4);

然而,这样做实际上是取消了整个会话变量。

然后,如果我尝试类似

的话
foreach ($_SESSION['array1'] as $k => $v) {
echo "The Key is $k: The Value is $v";
}

然而,这给了我一个错误

为foreach()提供的参数无效

我可以得出的唯一结论是会话变量完全未设置,而不是仅从数组中删除特定键。

有什么方法可以取消设置作为会话变量一部分的数组中包含的特定值?

3 个答案:

答案 0 :(得分:1)

您提供的代码按预期工作:

header("Content-Type: text/plain");
session_start();
$d1 = array(1,2,3,4);
$d2 = array(1,2,3,4,5,6);
$d3 = array(1,2,3,4,5,6,7,8);
$d4 = array(1,2,3,4,5);
$_SESSION['array1'] = array($d1,$d2,$d3,$d4);
unset($_SESSION['array1'][1]); 
print_R($_SESSION);

打印:

Array
(
    [array1] => Array
        (
            [0] => Array
                (
                    ...
                )

            [2] => Array
                (
                    ...
                )

            [3] => Array
                (
                    ...
                )

        )

)

所以一些调试思路:

  1. 请勿使用@session_start
  2. 设置error_reporting(E_ALL)
  3. 在php.ini中配置错误报告
  4. 检查您的Cookie以查看是否已发送PHPSESSID Cookie。

答案 1 :(得分:1)

使用array_splice,如下面的代码所示:

$_SESSION['array1'] = array_splice($_SESSION['array1'],1,0);

答案 2 :(得分:0)

如何再次存储会话变量:

$_SESSION['array1'] = array($d1,$d3,$d4);