Sum*_*mer 16 php arrays foreach reference unset
我在foreach循环中通过引用访问数组,但unset()函数似乎不起作用:
foreach ( $this->result['list'] as &$row ) {
if ($this_row_is_boring) {
unset($row);
}
}
print_r($this->result['list']); // Includes rows I thought I unset
Run Code Online (Sandbox Code Playgroud)
想法?谢谢!
irc*_*ell 32
你没有设置引用(打破引用).您需要根据键取消设置:
foreach ($this->result['list'] as $key => &$row) {
if ($this_row_is_boring) {
unset($this->result['list'][$key]);
}
}
Run Code Online (Sandbox Code Playgroud)
foreach ($this->result['list'] as $key => &$row) {
if ($this_row_is_boring) {
unset($this->result['list'][$key]);
}
}
unset($row);
Run Code Online (Sandbox Code Playgroud)
请记住:如果您使用 foreach带引用的a,则应使用unset取消引用,以便foreach不会复制下一个引用.更多信息
对上面的答案做一点解释。
之后unset($row)变量$row未设置。这并不意味着$row删除了数据;该列表还有一个指向 的元素$row。
将变量视为标签会有所帮助。一条数据可以有一个或多个标签,并unset删除该标签但不接触实际数据。如果删除所有标签,数据将自动删除。
| 归档时间: |
|
| 查看次数: |
10908 次 |
| 最近记录: |