PHP 7.2 : each is deprecated. 如何转换这些示例?

标签 php deprecated

使用 PHP 7.2,each已弃用。 The documentation说:

Warning This function has been DEPRECATED as of PHP 7.2.0. Relying on this function is highly discouraged.

如何更新我的代码以避免使用它?以下是一些示例:

  1. while ($x = each($y) {

  2. while (($x = each($y)) && ($a = each($b))) {

我相信我需要使用foreach在这些情况下,但我不知道如何正确地做到这一点。我已经在 stackoverflow 和其他网站上检查了很多示例,但没有一个示例的构造与上面的 2 类似。

编辑 如果可能的话,我正在寻找这些 while 的通用插入代码替换(仅限一行或几行代码)一行,由于上述更改,不需要重写完整的脚本/应用程序。

谢谢

最佳答案

我意识到您正在为这两个与 PHP 7.2 兼容的示例寻找通用的等效替代品,我希望这里有人会回答这个问题(因为这可能会帮助许多人转向 PHP 7.2 及更高版本),但是我确实有针对your script example的答案,即使不能普遍适用,至少也会在这种特定情况下为您提供帮助。

完全披露:我知道并使用该特定脚本(在 PHP 7.2 服务器上)。

while (($ut = each($user_tracking)) && ($listed++ < CONFIG_USER_TRACKING_SESSION_LIMIT)) {

应改为:

foreach ($user_tracking as $ut['value']) {
if ($listed++ >= CONFIG_USER_TRACKING_SESSION_LIMIT) {
  break;
}

查找:

while (($pu = each($ut['value']['last_page_url']))&&($du = each($ut['value']['page_desc']))) {

并更改为:

foreach ($ut['last_page_url'] as $key => $pu) {
          $du = $ut['page_desc'][$key];

确实需要在下面重写一小段代码,因为我们已将数组更改为字符串,但仍然可以获得我们需要的数据。

查找:

<tr bgcolor=ffffff> 
    <td class="dataTableContent" valign=top align="right"><?php echo date('H:i:s', $pu['key']); ?></td> 
    <td class="dataTableContent" nowrap valign=top align="left">&nbsp;<a href="<?php echo $pu['value']; ?>" target="_new"><?php if ($du['value']!=''){ echo $du['value'];} ?></a>&nbsp;</td> 
    <td class="dataTableContent" width=100% align="left"><a href="<?php echo $pu['value']; ?>" target="_new"><?php echo chunk_split($pu['value'],40,"<br>"); ?></a></td> 
</tr>

并更改为:

<tr bgcolor=ffffff> 
    <td class="dataTableContent" valign=top align="right"><?php echo date('H:i:s', $key); ?></td> 
    <td class="dataTableContent" nowrap valign=top align="left">&nbsp;<a href="<?php echo $pu; ?>" target="_new"><?php if ($du!=''){ echo $du;} ?></a>&nbsp;</td> 
    <td class="dataTableContent" width=100% align="left"><a href="<?php echo $pu; ?>" target="_new"><?php echo chunk_split($pu,40,"<br>"); ?></a></td> 
</tr>

希望这有帮助。

关于PHP 7.2 : each is deprecated. 如何转换这些示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51330881/

相关文章:

php - 在 Symfony 3 中为集合的每个元素应用特定的验证组

php - 红 bean PHP : Fatal error: Uncaught exception 'PDOException' with message 'Could not connect to database

java - 使用 EnumSet(不同类型)作为参数的相同方法名称

Maven:使用已弃用的类/方法进行报告

javascript - 无法上传文件、php和angularjs

php - 计算php中每个子数组中的元素

php - 已弃用:mysql_connect()

ios8 - iOS 8 中 searchDisplayController 的替代方案是什么?

objective-c - 弃用的方法,寻找替代方法

PHP:$_GET 中的奇怪字符串编码