10个php开发者最容易范的错误

1.foreach循环后留下对数组的引用

因为是引用赋值,所以结果显而易见是 2468,但是如果不注意的话,就会导致一些意想不到的错误,我们都知道foreach并不是想let一样是块级的作用域,而是全局的作用域,也就说foreach循环完之后,$v是$a数组里的最后一个元素,$v仍然保持在作用域内,因为是引用,并保持着对数组最后一个元素的引用,如果之后操作$v就可能无意之中修改数组最后一个元素的值。

要注意的是:

foreach并不会产生一个块级的作用域。这种行为就会导致一些不易发现的,令人困惑的bug,

比如这个的执行。最后的结果:是1 2 3 3 $v是3。当执行第一个foreach的时候,因为是引用传递,执行完毕之后,$v是数组a最后一个元素的引用,是指向4的内存地址。当执行第二个foreach的时候,是值传递,当循环第一次的时候,$v是1,相当于执行了&$v=$v,所以数组的最后一个元素就成了1,此时数组是 1231,当执行第二次循环的时候,&$v=$v,最后一个元素是2,此时成了1232,同理,第三次循环,1233

 

2.isset问题

isset 顾名思义是变量是否设置的意思,例如$a=''; 变量a是一个空字符串,变量a也已经设置了,所以isset返回true,但是有一种特殊情况,$a=null,isset会认为$a没有设置,返回false,

posted @ 2018-04-10 19:46  tianye_guazi  阅读(87)  评论(0编辑  收藏  举报