在PHP中使用引用变量的每个坑的讨论
写PHP很多年了,但仍然犯了很低的错误。今天,我们相会在foreach坑时,变量的引用,和PHP版本是这样的:5.6.12代码如下:< PHP
$ ARR = {'a',B,C,D,E'};
foreach(ARR美元美元美元我= >){
A. '_美元=美元。美元;
$;
}
回声';
foreach(ARR美元美元美元我= >){
$;
}
回声';
print_r($ ARR);
输出结果
这是看第二foreach输出结果起初很莫名其妙。你怎么能输出两d_d
仔细想想,因为php foreach美元的范围是整个函数的局部变量,它仍然是有效的外环,而不是封闭的环。
所以当第二个被执行,美元是不是一个新的变量,但它仍然指向arr数组的第五美元的元素的地址参考,
当第二foreach是回路中,它实际上是把第五美元的ARR数组元素,
具体分配,
第一次:a_a分配第五要素,结果是:{ a_a,b_b,c_c,d_d,a_a }
第二时间:b_b分配第五要素,结果是:{ a_a,b_b,c_c,d_d,b_b }
第三次:c_c分配第五要素,结果是:{ a_a,b_b,c_c,d_d,c_c }
第四次:d_d分配第五要素,结果是:{ a_a,b_b,c_c,d_d,d_d }
第五次:在这一点上,由于第五元已成为d_d和抽调d_d第五要素,结果是:{ a_a,b_b,c_c,d_d,d_d }
uff1a结算条款
1。不要尽可能使用相同的循环变量名;
2。unset($)前或使用前处理、地址的应用;
或者使用上面的代码示例:
$ ARR = {'a',B,C,D,E'};
foreach(ARR美元美元美元我= >){
A. '_美元=美元。美元;
$;
}
回声';
回声$;
回声';
/ /复原了
unset(美元);
echo = CCC;
回声';
print_r($ ARR);
回声';
foreach(ARR美元美元美元我= >){
$;
}
回声';
print_r($ ARR);
输出结果:
现在,这些小细节必须注意。
以上是PHP在foreach引用变量在基坑整体内容的使用的简单介绍,希望多支持~