有人可以在循环时解释我吗?
while (list($key, $value) = each($HTTP_GET_VARS)) {
$get_url .= $key . '=' . $value . '&';
}
我知道它很愚蠢,但很多时候愚蠢的事情会产生很大的不同......
答案 0 :(得分:4)
$HTTP_GET_VARS
是一个不推荐使用的数组,其中包含查询字符串中传递的参数。 each()
是一个迭代数组并返回一个数组的函数,该数组由数组“current”元素的键和值组成。 list()
是一种语言结构,它将分配给它的数组分解为传递给它的变量。
当到达数组的末尾时,each()
返回false值,导致循环退出。
答案 1 :(得分:2)
每个()函数返回给定数组的当前键和值,然后将数组指针(当前项)向前移动一个。
因此,多次调用它是一种按顺序迭代数组中项目的方法,当你到达结尾时,每个()只是停止返回一个值。
列表()不是函数,而是语言构造;它是一次设置多个变量的快捷方式。在发布的示例中,它将$ key设置为each()(当前键)返回的数组中的第一个值,将$ value设置为第二个值(当前值)。
该代码段存在许多问题。
答案 2 :(得分:1)
each
返回包含当前键和值的数组。 list
允许您将数组解压缩为多个变量。我发现foreach
结构更清晰。
foreach ($some_array as $key => $value)
{
...
}
正如Ignacio所述,HTTP_GET_VARS
已被弃用。您可以改为使用$_GET
。
答案 3 :(得分:1)
循环遍历数组$ HTTP_GET_VARS中的每对HTTP GET参数,将该对的两侧分配给两个变量$ key和$ value。
赋值'返回'它的值,因此,在数组的末尾,each()将返回false,尽管赋值将导致while条件中止。
在循环内部,$ key和$ value中的每一个都附加到字符串$ get_url中,并带有一些格式。