我正在做一个将数据保存在会话变量中的项目。这是一个 Wordpress 项目,我使用函数"sd_wizard_glass_type"将其显示为我网站页面上的模板。
如您所见:我首先在变量$glasstype中输入了 _SESSION['淋浴门']['玻璃类型']。
然后,如果设置了 $_GET['glasstype'],我把它放在$glasstype。现在我可以在我的函数"sd_wizard_glass_type"(作为会话变量)的任何地方使用$glasstype。
但是现在我想在以下函数(在下面的wordpress页面中)中使用variabe $glasstype($_SESSION['淋浴门']['glasstype']),但这不起作用。但是如果我在页面上使用 $_SESSION['淋浴门']['玻璃类型'] 确实有效。
我可以做些什么来使用 $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;
}
尝试的几件事。 首先,如果您需要变量在页面之间持久化,那么将其粘贴到会话中是个好主意。 如果你只需要它存在于那个页面上,那么你可以使用参数和返回值来移动它。 例如
function sd_wizard_glass_type() {
if(isset($_GET['glasstype'])) :
$type = $_GET['glasstype'];
else
$type = $_SESSION['showerdoor']['glasstype'];
return $type;
}
$glasstype = sd_wizard_glasstype();
现在在功能之外设置了玻璃类型
如果您需要将 GlassType 传递回函数
function newfunction($glasstype)
{
//stuff
//return something;
}
然后以相同的方式调用它
$foo = newfunction($glasstype);
您还可以使用关键字global
使变量全局化,但这不会持续到给定页面之后
编辑:这里要知道的主要事情是PHP中的变量范围。 如果在函数内声明变量,则不能在函数外部使用它。 如果在函数外部声明它,则不能在函数内使用它,除非您使用 global 关键字或将其作为参数传递
现在我可以在我的函数"sd_wizard_glass_type"(作为会话变量)的任何地方使用$glasstype。
不。这是一个局部变量。当你这样做时
$glasstype = $_SESSION['showerdoor']['glasstype'];
将会话变量的值复制到局部变量中。
可以通过将它们放在$_SESSION
超全局中来设置会话变量:
$_SESSION['showerdoor']['glasstype'] = $glasstype;
使用指针:
$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'].