php-在foreach中使用参考(&)在输出数组中添加`&`?这是一个错误吗
作者:互联网
我正在使用PHP 5.3.5,但遇到错误.我有一个数组
$input = array(
0=>array(
'a'=>'one0',
'b'=>'two0',
'c'=>'three0',
'd'=>'four0',
'e'=>'five0'
),
1=>array(
'a'=>'one1',
'b'=>'two1',
'c'=>'three1',
'd'=>'four1',
'e'=>'five1'
)
);
我使用array_splice
从每个数组中删除初始的两个值
通过在foreach中使用&(按引用值)
foreach ($input as $bk => &$bv) {
$op[]=array_splice($bv,0,2);
}
现在,当我看到$input时,它会添加&就在第二个数组之前.
var_dump($input);显示这个
array
0 =>
array
'c' => string 'three0' (length=6)
'd' => string 'four0' (length=5)
'e' => string 'five0' (length=5)
1 => & <====================================From where this `&` comes?
array
'c' => string 'three1' (length=6)
'd' => string 'four1' (length=5)
'e' => string 'five1' (length=5)
&在哪里来自以及如何产生这样的数组?有效吗
如果我删除&在foreach中,它没有给我想要的数组.难道我做错了什么?
解决方法:
这很违反直觉,但实际上不是错误.在循环中使用引用时,建议在循环后立即取消引用:
foreach ($input as $bk => &$bv) {
$op[]=array_splice($bv,0,2);
}
unset($bv);
标签:array-splice,multidimensional-array,foreach,pass-by-reference,php 来源: https://codeday.me/bug/20191201/2080134.html