在每个foreach语句之后我应该取消设置`$ key`和`$ value`吗?

时间:2017-12-28 16:45:33

标签: php foreach unset

我发现的所有答案只谈到取消$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相同?

1 个答案:

答案 0 :(得分:2)

您的问题的解决方案比您想象的要容易。

只需更改嵌套循环的变量名称,如下所示:

foreach ($data as $key => $value) {
    foreach ($value as $subkey => $subvalue) {
        // do stuff
    }
}

使用上面的代码,您可以分别从$date[$key](实际上等于父循环内的$value)访问数组数据$subkey$subvalue

您仍然可以分别使用$key$value访问父foreach循环内的任何位置的父循环数据。