php引用问题

如下为什么会输出1,2,2

$a = range(1, 3);

foreach ($a as &$val) {
}

foreach ($a as $val) {
}

print_r($a);
阅读 1.8k
4 个回答

问题在于第二个foreach &符。引用赋值。基础语法看看就明白了

我也想不明白 为什么在foreach外面打印$a还会影响$a的结果呢?

新手上路,请多包涵
$arr = [1, 2, 3];

foreach($arr as $k => &$v) {
    echo '第'.($k+1).'次循环,$v当前代表第'.($k+1).'个元素的引用,值为'.$v.PHP_EOL;
}

echo PHP_EOL.'循环结束,当前$v是第'.($k+1).'个元素的引用,值为'.$v.PHP_EOL;

echo '$arr数组值为:'.implode(',', $arr).PHP_EOL.PHP_EOL;

echo '$v是数组最后一个元素的引用'.PHP_EOL.PHP_EOL;

foreach($arr as $k => $v) {
    echo '第'.($k+1).'次循环,取出第'.($k+1).'个元素的值并将值赋给最后一个元素的引用'.$v.PHP_EOL;
    echo '此时数组为: '.implode(',', $arr).PHP_EOL.PHP_EOL;
}

echo '循环结束,$arr数组值为:'.implode(',', $arr).PHP_EOL;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题