【发布时间】:2018-06-09 05:18:12
【问题描述】:
我找到的所有答案都只涉及解除$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循环来创建具有唯一值的键数组,但是某些键被分配了与在它们之前以不可预知的方式创建的键相同的值,而我没有在我的整个代码中只有一个unset(),所以我怀疑这就是原因。 -
对嵌套的 foreach 循环使用不同的变量。
foreach($data as $k => $v) -
在循环之后不调用
unset的唯一常见缺点是,如果您是通过引用循环的,而您不是。否则,变量要么被其他东西覆盖,要么超出范围。如果你在嵌套循环中使用相同的变量名,那你就是自找麻烦。 -
感谢@GrumpCrouton,这似乎很容易解决。谢谢。