在PHP项目中使用foreach时需要注意哪些问题

  介绍

今天就跟大家聊聊有关在PHP项目中使用foreach时需要注意哪些问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

写PHP好多年,但仍然会犯低级错误,今天遇到个foreach中引用变量时的坑,PHP版本为5.6.12代码如下:

& lt; PHP ?   arr 美元;=,(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;,, & # 39; d # 39;,, & # 39; e # 39;];   foreach  (arr 美元;as  i=祝辞美元,一美元),{   美元才能a =,强生的# 39;美元_ # 39;只一美元;   echo 才能;a 美元;强生# 39;& lt; br> & # 39;;   }   echo  & # 39; & lt; hr> & # 39;;   foreach  (arr 美元;as  i=美元在一个美元),{   echo 才能;a 美元;强生# 39;& lt; br> & # 39;;   }   echo  & # 39; & lt; hr> & # 39;;   print_r (arr)美元;

输出结果

在PHP项目中使用foreach时需要注意哪些问题

一开始看到第二个foreach输出的结果感觉很是莫名其妙,怎么会输出两个d_d呢?

仔细想了想,原来因为PHP foreach中的一个美元的作用域是整个函数的局部变量,在循环外部仍然有效,而不是被封闭在循环内的,

所以当执行第二个foreach时的一个美元并不是新的变量,而是仍然指向arr数美元组第5个元素的地址引用,

当第二个foreach在循环时实际上是在不停的arr数美元给组的第5个元素赋值,

<强>具体赋值情况,

第一次:a_a赋值给第5个元素,结果为:[a_a、b_b c_c, d_d, a_a]

第二次:b_b赋值给第5个元素,结果为:[a_a、b_b c_c, d_d, b_b]

第三次:c_c赋值给第5个元素,结果为:[a_a、b_b c_c, d_d, c_c]

第四次:d_d赋值给第5个元素,结果为:[a_a、b_b c_c, d_d, d_d]

第五次:此时因为第五个元素已经变成d_d又重新把d_d赋值给第5个元素,结果还是为:[a_a、b_b c_c, d_d, d_d]

<强>解决办法:

1。尽量不使用相同的循环变量名;

2。每次使用完或再次使用前进行设置(美元);处理,解除地址应用

<强>还是用上面代码示例:

arr 美元;=,(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;,, & # 39; d # 39;,, & # 39; e # 39;];   foreach  (arr 美元;as  i=祝辞美元,一美元),{   美元才能a =,强生的# 39;美元_ # 39;只一美元;   echo 才能;a 美元;强生# 39;& lt; br> & # 39;;   }   echo  & # 39; & lt; hr> & # 39;;   echo 美元;   echo  & # 39; & lt; hr> & # 39;;//,这里,unset 掉   设置(美元);      echo  a 美元;=,& # 39;ccc # 39;;   echo  & # 39; & lt; hr> & # 39;;   print_r (arr);   echo  & # 39; & lt; hr> & # 39;;   foreach  (arr 美元;as  i=美元在一个美元),{   echo 才能;a 美元;强生# 39;& lt; br> & # 39;;   }   echo  & # 39; & lt; hr> & # 39;;   print_r (arr)美元;

输出结果:

在PHP项目中使用foreach时需要注意哪些问题

看完上述内容,你们对在PHP项目中使用foreach时需要注意哪些问题有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

在PHP项目中使用foreach时需要注意哪些问题