想必有很多同学在日常的开发过程中经常会碰到一些问题,而有些问题往往看起来是那么的简单,只要一说就能明白,可偏偏到了自己使用的时候就遇到了问题,这难道不是件很头疼的事情吗?小编就给大家整理了一些容易出现的问题,如下:
1、使用单引号,以双引号为分隔符,使用函数explode分割字符串,不能正常分割。
为什么会这样呢?原因是:由于单引号和双引号有区别,在单引号中“/”不能被解析,因此,在使用函数explode分割时,如果我们使用的是单引号,就会被当做字符串,而不是换行符,所以不能分割。、
2、正反斜杠导致函数basename使用无效
我们常常使用php函数basename时,从一个包含有指向一个文件的全部路径的字符串中获取文件名,但是由于正反斜杠的原因,我们在使用是会发现函数无法生效,尤其是在windows系统和别的系统之间切换时。原因是basename函数受操作系统的影响,在windows系统中正反斜线都可以用作分隔符,而在其他的操作环境下则只能用斜线,所以为了不出错,小编建议大家尽量用斜线来作为分隔符。
3、小数不能直接比较是否相等
比如 if( 0.5+0.2==0.7 ) 的结果是 false。究其原因是因为,php是基于c语言的,而c语言由于其二进制符点数的表示方式,导致不能准确表示大多数符点数。实际上,几乎所有的编程语言都没能准确的表示小数(符点数),这是一个普遍存在的现象,因为这个是 ieee 754 的缺陷。
4、 foreach语句
我们在运用 foreach语句时,需要注意到zui后一个$somel会一直保留到该函数/方式结束,而当使用引用的时候 foreach($somearr as &$somel){ }这是以引用来保存,也就是说后面若有使用同一个名字的变量名,将会把原数据改变(就像一个乱用的c指针)。所以,为了an全起见的话呢,小编建议每个foreach结束之后都要使用unset把这个变量清理掉,尤其是引用的foreach。
5、switch语句中的case不能当做if来使用
在php函数switch……case中,switch 匹配的是case语句的值,而不能把case当if用。同时,switch表达式优先匹配与其值类型一致的case语句,类型不一致的放在后面处理。
小编目前就整理这么多,希望能给大家带来帮助!