我正在开发一个在会话变量中保存数据的项目。这是一个Wordpress项目,我使用函数“sd_wizard_glass_type”将其显示为我网站页面上的模板。
如您所见:我首先将$ _SESSION ['showerdoor'] ['glasstype']放在变量$ glasstype中。
然后如果设置$ _GET ['glasstype'],我把它放在$ glasstype中。现在我可以在我的函数“sd_wizard_glass_type”中使用$ glasstype(作为会话变量)。
但是现在我想使用variabe $ glasstype($ _SESSION ['showerdoor'] ['glasstype'])在下面的函数中(在下面的wordpress页面中)并且不起作用。但如果我在页面上使用$ _SESSION ['showerdoor'] ['glasstype']就可以了。
我可以做些什么来使用$ glasstype作为会话变量吗?
// Step: Glass type
function sd_wizard_glass_type() {
$glasstype = $_SESSION['showerdoor']['glasstype'];
if(isset($_GET['glasstype'])) :
$glasstype = $_GET['glasstype'];
endif;
}
最后更新:
function sd_wizard_glass_type() {
if(isset($_GET['glasstype'])) :
$_SESSION['showerdoor']['glasstype'] = $_GET['glasstype'];
endif;
$_SESSION['showerdoor']['glasstype'] = $glasstype;
}
答案 0 :(得分:0)
现在我可以在我的函数“sd_wizard_glass_type”中使用$ glasstype(作为会话变量)。
没有。这是一个局部变量。当你这样做
$glasstype = $_SESSION['showerdoor']['glasstype'];
将会话变量的值复制到局部变量中。
会话变量可以通过将它们放在$_SESSION
超全局:
$_SESSION['showerdoor']['glasstype'] = $glasstype;
答案 1 :(得分:0)
你可以试试几件事。首先,如果您需要在页面之间保留变量,那么将其粘贴在会话中是一个好主意。如果你只需要它生活在那个页面上,那么你可以使用参数和返回值来移动它。例如
function sd_wizard_glass_type() {
if(isset($_GET['glasstype'])) :
$type = $_GET['glasstype'];
else
$type = $_SESSION['showerdoor']['glasstype'];
return $type;
}
$glasstype = sd_wizard_glasstype();
现在glasstype设置在函数
之外如果你需要将glasstype传递回函数
function newfunction($glasstype)
{
//stuff
//return something;
}
然后以相同的方式调用它
$foo = newfunction($glasstype);
您还可以使用关键字global
创建一个全局变量,但这不会超出给定页面
编辑:这里要知道的主要是php中的变量范围。如果在函数内声明变量,则不能在函数外部使用它。如果在函数外声明它,则不能在函数内部使用它,除非您使用global关键字或将其作为参数传递
答案 2 :(得分:-3)
使用指针:
$glasstype = &$_SESSION['showerdoor']['glasstype'];
但如果你尝试:
function toto()
{
$glasstype = &$_SESSION['showerdoor']['glasstype'];
$glasstype = 42;// Work
}
toto();
$glasstype = 42*42; // Fail because $glasstype is a local var
// If you want to do this, replace all $glasstype by $_SESSION['showerdoor']['glasstype'].