ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
循环数组引用传值时,删除元素不要直接unset($v),而是unset($arr[$key]) 两个数组都用$v,但是只有第一个数组引用传值 ``` $arr = array("a", "b", "c"); $arr2 = array("d", "e", "f"); foreach($arr as &$v) { $v .= 1; } var_dump($arr);//array ( 0 => 'a1', 1 => 'b1', 2 => 'c1', ) var_dump($arr2);//array ( 0 => 'd', 1 => 'e', 2 => 'f', ) foreach($arr2 as $v) { $v .= 2; } var_dump($arr);//array ( 0 => 'a1', 1 => 'b1', 2 => 'f2', ) var_dump($arr2);//array ( 0 => 'd', 1 => 'e', 2 => 'f', ) ``` 所以这种情况我们需要再第一个数组循环后unset($v);以免影响到下一个 又或者将后面的循环放到函数里 两个数组都用$v且都引用传值 ``` $arr = array("a", "b", "c"); $arr2 = array("d", "e", "f"); foreach($arr as &$v) { $v .= 1; } var_dump($arr);//array ( 0 => 'a1', 1 => 'b1', 2 => 'c1', ) var_dump($arr2);//array ( 0 => 'd', 1 => 'e', 2 => 'f', ) foreach($arr2 as &$v) { $v .= 2; } var_dump($arr);//array ( 0 => 'a1', 1 => 'b1', 2 => 'c1', ) var_dump($arr2);//array ( 0 => 'd2', 1 => 'e2', 2 => 'f2', ) ```