PHP 7.2 每个都已弃用。将 for each 转换为 foreach
PHP 7.2 each is deprecated. Convert for each to foreach
我得到了这两个在 php 7.2
上抛出 DEPRECATED 通知的函数
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;
}
我尝试修改它们以与新的 php 兼容,像这样使用 foreach:
变化中:
for (reset($session->vars); list($i)=each($session->vars);) {
收件人:
foreach (array_keys($session->vars) as $i) {
但我不能 100% 确定这是否是正确的相同改编。有什么意见吗?
您不需要数组键:
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;
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
并将会话作为参数传递给每个函数。
我得到了这两个在 php 7.2
上抛出 DEPRECATED 通知的函数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;
}
我尝试修改它们以与新的 php 兼容,像这样使用 foreach:
变化中:
for (reset($session->vars); list($i)=each($session->vars);) {
收件人:
foreach (array_keys($session->vars) as $i) {
但我不能 100% 确定这是否是正确的相同改编。有什么意见吗?
您不需要数组键:
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;
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
并将会话作为参数传递给每个函数。