<?php
$a = array('a', 'b', 'c', 'd');
foreach ($a as &$v) { }
foreach ($a as $v) { }
print_r($a);
?>
Run Code Online (Sandbox Code Playgroud)
我认为这是一个正常的程序,但这是我得到的输出:
Array
(
[0] => a
[1] => b
[2] => c
[3] => c
)
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下吗?
为什么空的foreach循环可以改变结果.
我有以下代码:
$variable = [1,2,3,4];
foreach ($variable as $key => &$value)
$value ++;
var_dump($variable);
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
array (size=4)
0 => int 2
1 => int 3
2 => int 4
3 => &int 5
Run Code Online (Sandbox Code Playgroud)
现在,当我像这样添加一个空的foreach循环时:
$variable = [1,2,3,4];
foreach ($variable as $key => &$value)
$value ++;
foreach ($variable as $key => $value);
var_dump($variable);
Run Code Online (Sandbox Code Playgroud)
我明白了:
array (size=4)
0 => int 2
1 => int 3
2 => int 4
3 => &int 4
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下为什么当我添加第二个空循环时最后一个元素不会改变,以及为什么最后一个元素有一个&infront?