【发布时间】:2020-07-01 02:46:14
【问题描述】:
如何重写这段 php 脚本,使其不再在 'if' 语句中使用已弃用的函数 'each'?
if (list($_basic_auth_realm, $_basic_auth_header) = each($_auth_creds))
{
...
}
很多谢谢。供您输入!
V.
[编辑]。此 if 语句不在循环中。它是更大区块的一部分:
if (!empty($_basic_auth_header))
{
....
}
else if (!empty($_basic_auth_realm) && isset($_auth_creds[$_basic_auth_realm]))
{
....
}
else if (list($_basic_auth_realm, $_basic_auth_header) = each($_auth_creds))
{
....
}
$_basic_auth_realm, $_basic_auth_header 是字符串 $_auth_creds 是一个数组
我真的不明白这个“if”语句是如何工作的。我只尝试更新执行时返回警告的脚本。正如 Abdullah Arif 所写,它在我的 NAS 上用作 php 代理:https://github.com/emersion/phproxy
【问题讨论】:
-
这是循环吗?使用
foreach -
首先,您需要了解 [each][1] 的作用。然后你需要用类似的逻辑替换它。这实际上取决于
$_basic_auth_realm、$_basic_auth_header和$_auth_creds中的内容,以及if语句的意图。 [1]:php.net/manual/en/function.each.php -
谢谢丹尼尔。在网上找到的大多数带有“each”语句的样本确实都在“while”循环中。就我而言,我在 Synology 的一个包中找到了这个 php 脚本(由 Abdullah Arif 于 2007 年制作)。我希望有一种方法可以在没有循环的情况下重写它。老实说,使用 list (x, y) = each( my_array ) 有点奇怪......我猜如果 my_array 没有长度,它会返回 false != 2