我发现的所有答案只谈到取消$value
除了一个,我不清楚。所以我在这里。说我有这条线:
foreach ($data as $key => $value)
{
// do stuff
}
我应该把这两行放在后面吗?
unset($key);
unset($value);
或者我可以省略unset($key)
吗?此外,是否建议在每foreach
之后始终使用未设置?假设我有嵌套的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
相同?
答案 0 :(得分:2)
您的问题的解决方案比您想象的要容易。
只需更改嵌套循环的变量名称,如下所示:
foreach ($data as $key => $value) {
foreach ($value as $subkey => $subvalue) {
// do stuff
}
}
使用上面的代码,您可以分别从$date[$key]
(实际上等于父循环内的$value
)访问数组数据$subkey
和$subvalue
。
您仍然可以分别使用$key
和$value
访问父foreach循环内的任何位置的父循环数据。