PHP7.2每个版本都不推荐使用。将每个转换为foreach
我得到了这两个函数,它们在PHP7.2上抛出了不推荐使用的通知PHP7.2每个版本都不推荐使用。将每个转换为foreach,php,deprecated,Php,Deprecated,我得到了这两个函数,它们在PHP7.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[$
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);) {
致:
但我不能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;
但是,如果你重写应用程序,我建议你也去掉这个
global
,并将会话作为参数传递给每个函数。谁为(reset($session->vars);list($I)=each($session->vars);)编写了这个?难以置信……哈哈。。。是的,我也这么想。还有更多令人难以置信的例子……:)哇,那完全不可读。幸运的是,你现在可以发布通知了。。。你可以用一个简单的名字称呼他叫CreativeMind;)这是他的荣誉。哈哈…我没有写那个应用程序,罗恩,我只是在做它的改编谢谢。第二个代码块正确吗?我在第一行看到了$session\u var
,但在第二行看到的不是$session->vars
,这与上面的第一个代码块不同。@CreativeMind,这是正确的,但不像第一个或第三个解决方案那样高效。如果您只想交换一行代码,我将其作为示例。但我建议重构和优化您的代码。这不会占用您太多时间,但它有助于提高代码执行的性能此应用程序有数千个代码文件需要重构和优化,因此肯定需要很多时间:)谢谢您的回答和建议。谢谢。我认为他们不想为一个完整的应用程序重写付费,只需要进行必要的最小修改,但我们会讨论。
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)]);
}