【问题标题】:Function each() has been DEPRECATED as of PHP 7.2.0自 PHP 7.2.0 起,函数 each() 已被弃用
【发布时间】:2020-12-08 11:49:32
【问题描述】:

如何更新我的代码以避免使用函数 each()?

if (count($HTTP_POST_VARS)) {
       while (list($key, $val) = each($HTTP_POST_VARS)) {
       print "<input type=\"hidden\" name=\"$key\" value=\"$val\">\n";
      }
}

我尝试了这个解决方案,但没有成功:

if (count($HTTP_POST_VARS)) {
           foreach ($HTTP_POST_VARS as $key => $val) {
           print "<input type=\"hidden\" name=\"$key\" value=\"$val\">\n";
          }
    }

【问题讨论】:

  • 只使用 $_POST 有什么问题?

标签: php function foreach each


【解决方案1】:

list($key, $val) = each($HTTP_POST_VARS)

改成

function a_each(&$arr){
    $key = key($arr);
    if (!$key)
        return false;
    $val = current($arr);
    next($arr);
    return array($key, $val);
}

list($key, $val) = each($HTTP_POST_VARS);
【解决方案2】:

你可以使用$_POST

if (count($_POST)) {
  foreach ($_POST as $key => $val) {
    print "<input type=\"hidden\" name=\"$key\" value=\"$val\">\n";
  }
}

更多信息请见https://www.php.net/manual/en/reserved.variables.post.php

【讨论】:

  • 谢谢,现在可以了。我在其他地方有类似的代码,但我应该如何解决这个问题? if (count($_SESSION)) { while (list($key, $val) = each($_SESSION)) { $$key = $val; } } 我收到了这个警告:警告:count():参数必须是一个数组或一个在 /home/igor/public_html/foto/const.inc.php 中实现 Countable 的对象
  • @Igor 是因为您的 $_SESSION 是空的或字符串,无法计算在内。您应该在 count() 之前使用 is_array() 验证 $_SESSION
猜你喜欢
  • 2020-04-20
  • 2018-12-16
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 2017-12-04
相关资源
最近更新 更多