需求来源: 在APP迭代更新过程中,有这样的需求,需要比较版本号的大小,然后弹出提示框提示更新. 之前版本号一直是中规中矩的按照1.1.0 –> 1.1.2这种数字变化方式.采用的方法是:将版本号字符串中的.号删除掉之后,比较两个数字的大小,后来发现在App Store中,各种APP的版本号数字变化的格式千奇百怪,1.0.11–>1.1.0,如果还采用上面的方法比较版本号,就不对了1011(本地version)肯定是大于110(线上版本),而实际上1.1.0是1.0.11的下一个版本. 解决方法: 版本号是分成三个模块来命名的,所以比较大小还是将三个部分剖开来比较大小兼容性强一些,万一遇到版本号命名没有按照规定的格式来,到时候大小就判断错了. 思路是这样的:三个部分,从第一个部分开始比较大小,优先级:第一部分>第二部分>第三部分,一旦分出大小就代表比较结束了,只要前面一部分大,无论后面一部分怎么小都没关系. /* 版本比较 @param $v1 @param $v2 @return int / public function compareVersion($v1,$v2) { $v1 = explode(‘.’,$v1); $v2 = explode(‘.’,$v2); $minlen = count($v1) < count($v2) ? count($v1) : count($v2); for ($i = 0; $i < $minlen; $i++){//以最短的数组长度为遍历次数,防止数组越界 if($v1[$i] < $v2[$i]){//从前往后比较数字大小,一旦分出大小,跳出循环 return 1; break; } } return 0; } 相关链接:http://blog.csdn.net/qq\_31186665/article/details/55095144 http://blog.csdn.net/liujun99/article/details/53006662?utm\_source=itdadao&utm\_medium=referral http://www.jianshu.com/p/ee1990270ee1 http://blog.sina.com.cn/s/blog\_6feaf58501017py9.html