我应该在每个 foreach 语句后同时取消设置 `$key` 和 `$value` 吗?
Should I unset both `$key` and `$value` after every foreach statement?
我找到的所有答案都只谈论取消设置 $value
除了一个我不清楚的答案。所以我在这里。假设我有这条线:
foreach ($data as $key => $value)
{
// do stuff
}
我应该把这两行放在后面吗?
unset($key);
unset($value);
或者我可以省略 unset($key)
吗?另外,是否建议在每 foreach
之后始终使用 unset?假设我嵌套了 foreach
循环,如下所示:
foreach ($data as $key => $value)
{
foreach ($data[$key] as $key => $value)
{
// do stuff
}
unset($key);
unset($value);
}
unset($key);
unset($value);
嵌套的 unset()
函数会干扰最高级别 foreach
吗?也就是说,嵌套的$key
和$value
和最高层的$key
和$value
一样吗?
解决您的问题比您想象的要容易。
只需更改嵌套循环的变量名称,如下所示:
foreach ($data as $key => $value) {
foreach ($value as $subkey => $subvalue) {
// do stuff
}
}
使用上面的代码,您可以从 $date[$key]
(实际上等于父循环中的 $value
)访问数组数据,如 $subkey
和 $subvalue
分别。
您仍然可以分别使用 $key
和 $value
在父 foreach 循环内的任何位置访问父循环数据。
我找到的所有答案都只谈论取消设置 $value
除了一个我不清楚的答案。所以我在这里。假设我有这条线:
foreach ($data as $key => $value)
{
// do stuff
}
我应该把这两行放在后面吗?
unset($key);
unset($value);
或者我可以省略 unset($key)
吗?另外,是否建议在每 foreach
之后始终使用 unset?假设我嵌套了 foreach
循环,如下所示:
foreach ($data as $key => $value)
{
foreach ($data[$key] as $key => $value)
{
// do stuff
}
unset($key);
unset($value);
}
unset($key);
unset($value);
嵌套的 unset()
函数会干扰最高级别 foreach
吗?也就是说,嵌套的$key
和$value
和最高层的$key
和$value
一样吗?
解决您的问题比您想象的要容易。
只需更改嵌套循环的变量名称,如下所示:
foreach ($data as $key => $value) {
foreach ($value as $subkey => $subvalue) {
// do stuff
}
}
使用上面的代码,您可以从 $date[$key]
(实际上等于父循环中的 $value
)访问数组数据,如 $subkey
和 $subvalue
分别。
您仍然可以分别使用 $key
和 $value
在父 foreach 循环内的任何位置访问父循环数据。