相关疑难解决方法(0)

foreach的奇怪行为

<?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)

有人可以向我解释一下吗?

php arrays foreach

42
推荐指数
1
解决办法
3412
查看次数

foreach循环和&$ value的引用

为什么空的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?

php arrays foreach

21
推荐指数
3
解决办法
9150
查看次数

标签 统计

arrays ×2

foreach ×2

php ×2