我只是想循环遍历所有当前会话变量,如果会话变量名称以'tmp'开头,那么我想取消设置变量。
我会这样做:
foreach($session as $sv){
if(substr($sv,0,3)=='tmp'){
unset($sv);
}
}
只是不确定如何将所有当前会话变量放入数组中以开始。
提前致谢!
答案 0 :(得分:1)
$_SESSION
包含每个会话变量
foreach(array_keys($_SESSION) as $sv){
if(substr($sv, 0, 3) === 'tmp'){
unset($_SESSION[$sv]);
}
}
是正确的
答案 1 :(得分:1)
只需使用$_SESSION
答案 2 :(得分:1)
有什么问题
foreach (array_keys($_SESSION) as $key) {
if (substr($key,0,3) == 'tmp') {
unset($_SESSION[$key]);
}
}
答案 3 :(得分:1)
使用合适的示例解决方案
<?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);
?>
答案 4 :(得分:1)
如果您实际上尝试使用session来设置未设置的变量,则会循环遍历$_SESSION
。
如果session variables
表示“在当前脚本范围内声明的所有变量”,则会遍历全局范围内所有变量的$GLOBALS
或get_defined_vars()
的结果对于当前范围内的所有变量,例如当前功能的范围。
您必须实际执行循环并取消设置变量的代码是正确的。
答案 5 :(得分:1)
会话本身是一个大数组,数组数组等...所以你需要做一些递归函数来搜索所有级别($ _SESSION [“a”]可以是一个内部有一些临时数的数组$ _SESSION [“a”] [“tmp_b”] ..)
所以:
function resetTemps($arr)
{
foreach( $arr as $key => $value )
{
if( is_array( $value ) )
{
resetTemps($value);
}
else
{
if( substr($key,0,3)=='tmp' )
{
unset( $arr[$key] );
}
}
}
}
然后将其称为
resetTemps($_SESSION);