我得到了这两个函数,它们在php 7.2上引发了已弃用的通知
function session_unregister($var) {
global $session;
for (reset($session->vars); list($i)=each($session->vars);) {
if ($session->vars[$i] == trim($var)) {
unset($session->vars[$i]);
break;
}
}
}
function session_is_registered($var) {
global $session;
for (reset($session->vars); list($i)=each($session->vars);) {
if ($session->vars[$i] == trim($var)) {
return true;
}
}
return false;
}
我尝试使用foreach修改它们以使其与新php兼容:
更改:
for (reset($session->vars); list($i)=each($session->vars);) {
收件人:
foreach (array_keys($session->vars) as $i) {
但是我不确定100%是否是正确的相同改编。有任何评论吗?
答案 0 :(得分:2)
您不需要数组键:
foreach ($session->vars as $key=>$sesion_var) {
if ($sesion_var == trim($var)) {
return true;
}
}
或更与其余代码保持一致:
foreach ($session->vars as $i=>$sesion_var) {
if ($session->vars[$i] == trim($var)) {
return true;
}
}
或者也许您应该使用array_search()而不是该代码块:
if(array_search(trim($var), $session->vars)) return true;
答案 1 :(得分:1)
function session_unregister(string $var): void
{
global $session;
$var = trim($var);
if (isset($session->vars[$var])) {
unset($session->vars[$var]);
}
}
function session_is_registered(string $var): bool
{
global $session;
return isset($session->vars[trim($var)]);
}
但是,如果您重写应用程序,我也建议您摆脱该global
并将会话作为参数传递给每个函数。