引用类型的数组成员在 foreach 中的 bug

查看 52|回复 1
作者:zzzkkk   
$out = [1,2,3,4,5];
$out = array_chunk($out, $k);
foreach($out as &$v){
$v = array_reverse($v);
}
$out2 = [];
foreach($out as $v){
$out2 = array_merge($out2, $v);
}
var_dump($out2);exit;
应该输出 2 1 4 3 5 但结果是 2 1 4 3 4 3
需要把第二个 foreach $v 改成&$v 才行

foreach, out2, out, exit

Rache1   
手册上第一个示例块就说了
PHP: foreach - Manual
https://www.php.net/manual/zh/control-structures.foreach.php
在 foreach 使用了 & 的情况下,你再 foreach 下面再 unset 掉就好了。
$out = [1,2,3,4,5];
$out = array_chunk($out, $k);
foreach($out as &$v){
$v = array_reverse($v);
}
// 👇
unset($v);
$out2 = [];
foreach($out as $v){
$out2 = array_merge($out2, $v);
}
var_dump($out2);exit;
您需要登录后才可以回帖 登录 | 立即注册

返回顶部