Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用';tmp&x27;在前面_Php_Loops_Foreach_Session Variables - Fatal编程技术网

PHP使用';tmp&x27;在前面

PHP使用';tmp&x27;在前面,php,loops,foreach,session-variables,Php,Loops,Foreach,Session Variables,我只是想遍历所有当前会话变量,如果会话变量名称以“tmp”开头,那么我想取消设置该变量 我会这样做: foreach($session as $sv){ if(substr($sv,0,3)=='tmp'){ unset($sv); } } 只是不知道如何将所有当前会话变量放入一个数组中 提前谢谢 $\u会话保存每个会话变量 foreach(array_keys($_SESSION) as $sv){ if(substr($sv, 0, 3) === '

我只是想遍历所有当前会话变量,如果会话变量名称以“tmp”开头,那么我想取消设置该变量

我会这样做:

foreach($session as $sv){
    if(substr($sv,0,3)=='tmp'){
        unset($sv);
    }
}
只是不知道如何将所有当前会话变量放入一个数组中


提前谢谢

$\u会话
保存每个会话变量

foreach(array_keys($_SESSION) as $sv){
    if(substr($sv, 0, 3) === 'tmp'){
        unset($_SESSION[$sv]);
    }
}

正确

$\u会话
保存每个会话变量

foreach(array_keys($_SESSION) as $sv){
    if(substr($sv, 0, 3) === 'tmp'){
        unset($_SESSION[$sv]);
    }
}

是正确的

简单使用

简单使用

有什么问题吗

foreach (array_keys($_SESSION) as $key) {
    if (substr($key,0,3) == 'tmp') {
        unset($_SESSION[$key]);
    }
}

有什么问题吗

foreach (array_keys($_SESSION) as $key) {
    if (substr($key,0,3) == 'tmp') {
        unset($_SESSION[$key]);
    }
}

?带有合适示例的解决方案

<?php session_start();
$_SESSION['var1']='var 1 value';
$_SESSION['var2']='var 2 value';
$_SESSION['var3']='var 3 value';

$_SESSION['tmpvar1']='tmp var 1 value';
$_SESSION['tmpvar2']='tmp var 2 value';
$_SESSION['tmpvar3']='tmp var 3 value';

print_r($_SESSION);

foreach($_SESSION as $key=>$value)
{
    if(substr($key,0,3)=='tmp'){
        unset($_SESSION[$key]);
    }
}
print_r($_SESSION);
?>

带有适当示例的解决方案

<?php session_start();
$_SESSION['var1']='var 1 value';
$_SESSION['var2']='var 2 value';
$_SESSION['var3']='var 3 value';

$_SESSION['tmpvar1']='tmp var 1 value';
$_SESSION['tmpvar2']='tmp var 2 value';
$_SESSION['tmpvar3']='tmp var 3 value';

print_r($_SESSION);

foreach($_SESSION as $key=>$value)
{
    if(substr($key,0,3)=='tmp'){
        unset($_SESSION[$key]);
    }
}
print_r($_SESSION);
?>

如果您实际上正在尝试使用a)取消设置变量,您将循环使用

如果所说的会话变量是指“当前脚本范围内声明的所有变量”,则您将对全局范围内的所有变量进行循环,或对当前范围内的所有变量(例如,当前函数的范围)进行循环


您必须实际执行循环并取消设置变量的代码是正确的。

如果您实际尝试使用a)取消设置变量,您将进行循环

如果所说的会话变量是指“当前脚本范围内声明的所有变量”,则您将对全局范围内的所有变量进行循环,或对当前范围内的所有变量(例如,当前函数的范围)进行循环


您必须实际执行循环并取消设置变量的代码是正确的。

会话本身是一个大数组,由数组数组等组成。。。因此,您需要创建一些递归函数来搜索所有级别($_SESSION[“a”]可以是一个数组,其中包含一些临时变量,如$_SESSION[“a”][“tmp_b”]…)

因此:

然后像这样称呼它

resetTemps($_SESSION);

会话本身是一个大数组,数组的数组等等。。。因此,您需要创建一些递归函数来搜索所有级别($_SESSION[“a”]可以是一个数组,其中包含一些临时变量,如$_SESSION[“a”][“tmp_b”]…)

因此:

然后像这样称呼它

resetTemps($_SESSION);

您正在检查会话变量的值是否为
tmp*
,而不是名称。@StefanGehrig:请按F5。我在Mac上-所以我没有
F5
;-)您正在检查会话变量的值是否为
tmp*
,而不是名称。@StefanGehrig:请按F5。我在Mac上-所以我没有
F5
;-)感谢所有的快速回复。我现在觉得自己有点像个白痴,因为我没有意识到$\u会话本身就是一个数组。现在到了,谢谢你的快速回复。我现在觉得自己有点像个白痴,因为我没有意识到$\u会话本身就是一个数组。现在到了。