当使用foreach循环和引用时,如何停止指向引用的最后一个成员?


When using a foreach loop and a reference, how can I stop the last member pointing to a reference?

考虑以下代码…

$a = range(1, 5);
foreach($a as &$b) { }
var_dump($a);

输出为…

array(5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  &int(5)
}

CodePad .

见最后一个成员的& ?我怎么才能阻止呢?

您可以unset($b)

$a = range(1, 5);
foreach($a as &$b) { }
unset($b);
var_dump($a);

CodePad .

你应该unset()来避免这个…

$a = range(1, 5);
foreach($a as &$b) { }
$b = 10;
var_dump($a);

…该输出…

array(5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  &int(10)
}

CodePad .