昨天的时候在改PHP的代码,碰到一个纠结我好长时间的问题,本人一直是做的是.net,对于PHP的来说,只是需要做项目的时候现学的,所以碰到不少问题,因为没有配置PHP的DeBug环境,所以只能边运行看着结果去改代码,对于我这种习惯了查看时时参数的初级程序猿来说,真的是个挑战。
好了,言归正传,继续说问题,要做的PHP代码是个商城通过ajax根据数量,属性修改总价的功能,在数据库里有一个区间价,需要拆分出来,就需要用到将字符串拆分成数组的方法,想起JS的split,就试了一下,发现有,还可以用,后来,在服务器老是出不来结果,于是就一步步的找问题,发现,总算是找到问题了,于是我将split换成了explode ,OK,执行成功,但是为什么呢,于是我就将两个方法找了出来看看。
函数原型:array split (string $pattern, string $string [, int $limit])
$test = end(explode('.', 'abc.txt'));
echo $test;//output txt
$test1 = end(split('.','abc.txt'));
echo $test1;//no output
用split的正确做法是:加转义符号
$test1 = end(split('\.','abc.txt'));
echo $test1;//output txt
分析:"." 符号是正则表达式的关键字所以split无效,而explode有效。
好了,言归正传,继续说问题,要做的PHP代码是个商城通过ajax根据数量,属性修改总价的功能,在数据库里有一个区间价,需要拆分出来,就需要用到将字符串拆分成数组的方法,想起JS的split,就试了一下,发现有,还可以用,后来,在服务器老是出不来结果,于是就一步步的找问题,发现,总算是找到问题了,于是我将split换成了explode ,OK,执行成功,但是为什么呢,于是我就将两个方法找了出来看看。
函数原型:array split (string $pattern, string $string [, int $limit])
函数原型:array explode ( string $separator, string $string [, int $limit])
初看没有啥差别,貌似功能都一样。
然后上网找了一下,发现了,参数string $pattern和string separator,一个是$pattern说明是正则字符串,一个是$separator是普通字符串。
$test = end(explode('.', 'abc.txt'));
echo $test;//output txt
$test1 = end(split('.','abc.txt'));
echo $test1;//no output
用split的正确做法是:加转义符号
$test1 = end(split('\.','abc.txt'));
echo $test1;//output txt
分析:"." 符号是正则表达式的关键字所以split无效,而explode有效。