版本号对比

2016年3月17日 11:02:38 星期四

原理:

1. 拆开点分的版本号

2. 对每一项左边补齐0

3. 重新拼接后, 逐位对比

 1 /**
 2  * @param $version 待检测版本
 3  * @param $base_version 基准版本(一般是最新版本)
 4  * @return int
 5  * desc 待检测版本 > 基准版本 返回值大于0
 6  */
 7 function compareVersion($version, $base_version)
 8 {
 9     $arrVersion = explode(‘.‘, $version);
10     $formatVersion = ‘‘;
11     foreach ($arrVersion as $v) {
12         $formatVersion .= str_pad($v, 4, ‘0‘, STR_PAD_LEFT);
13     }
14
15     $arrBaseVersion = explode(‘.‘, $base_version);
16     $formatBaseVersion = ‘‘;
17     foreach ($arrBaseVersion as $v) {
18         $formatBaseVersion .= str_pad($v, 4, ‘0‘, STR_PAD_LEFT);
19     }
20
21     return strcmp($formatVersion, $formatBaseVersion);
22 }
时间: 2024-10-25 22:21:01

版本号对比的相关文章

版本号对比方案及参考代码(Objective-C,Java,JavaScript)

常用版本号 如 2.0.1 与 2.0.2 相比  2.0.2是比2.0.1要新的 那么该如何对这个版本号进行对比 这里有一个比较简单的实现方案 2.0.1 这种格式可以拆分为多个部分 如这里的2是大版本号,0是子版本号,1是修复版本号 那么我们可以将2.0.1拆分为N部分 拆分N部分后 ,可以通过遍历来做对比 直接上代码 OC: 判断aVersion是否大于bVersion 例子 : A. NSString *aVersion = @"2.4.2"; NSString *bVersi

【js】版本号对比处理方案

今天在处理一个bug问题,适配客户端版本:若版本号未达到,则不可运行该功能,若达到则可运行. 版本号规则如下:(一般统一为2个点,其他的是数字,版本号从高位到低位,首位越大则越大,首位相同则对比下一位...) 版本由低到高:6.10.9 7.9.5 7.10.3 7.21.1 来看下怎么实现. 实现原理: 取出当前版本号,传递目标版本号.将他们分别分割成数组.每个元素进行对比.第一位大的就大,第一位相同就对比下一位...循环. 假设当前版本号为: 调用输出结果: 7.9.5 > 6.10.1 7

采用接口版本号机制保障跨平台接口的一致性

[背景] 平台A和平台B进行网络通信,通信接口以C语言结构体形式定义,存于名如interface_plata_platb.h的头文件内.正常情况下,平台A和平台B分别存储一份接口文件,其内容应该完全相同.由于同名的接口文件分两处存储,变更时很容易出现不同步的问题(例如两个平台分别A使用变更前后的接口文件),从而导致报文解析异常. [问题] 请设计一种接口控制机制,以保证接口变更时两个平台采用一致的接口文件.为简化问题,假定:1) 两个平台处理器的字节对齐方式和字节序均相同:2) 可增加或删除接口

Jvm(34),class文件结构----魔数,版本号

魔数(U4----magic----1) 每个class文件的头4个字节称为魔数(Magic Number),其值为:0xCAFEBABE,它是16 进制的,这条数值是确定的,唯一的.它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的class文件.使用魔数而不是扩展名来进行识别主要是基于安全的考虑,因为文件的扩展名可以随意地被改动. 它就相当于我们定义图片的格式是png的还是gif的,因为在class文件中,我们可以通过修 改class的后缀名来修改class文件,但是它的魔数是写在cl

远成文件的版本控制系统~~~浅析

远成文件的版本控制系统 ~~~~浅析 问题描述 大多数基于C/S模式的应用软件都存在客户端的版本更新问题.通常的解决方案是服务器端提供一个UpdateServer为每一个Client提供版本更新服务.更好一点的方案是在一个小型的局域网内部实现LocalUpdata,然后再与UpdateServer连接.解决方案一LocalUpdate: 每一个Client程序启动时,首先开始一个ServerThread并申请一个本地端口(每个Client的监听段口应一致,以便能收到Client发来的升级信息广播

【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)

转载自:http://www.himigame.com/iphone-cocos2dx/1354.html 首先说明一个问题: 为什么要在线更新资源和脚本文件!? 对于此问题,那要说的太多了,简单概括,如果你的项目已经在google play 或Apple Store 等平台上架了,那么当你项目需要做一些活动或者修改前端的一些代码等那么你需要重新提交一个新版本给平台,这时候你的上架时候是个不确定的时候,具体什么时候能上架,主要跟平台有关,你再着急,也没有用的. 那么如果你的项目是使用脚本语言进行

Android在线升级相关笔记一(解析服务器版本与当前版本比较)

大概流程:Android客户端去访问服务器上的封装了版本号等信息的xml文件,对服务器上的版本和当前版本进行比较, 如果低于服务器的版本,则下载服务器上的新版软件,进行安装替换,完成升级. 一.首先用tomcat搭建服务器,用于开发测试. 下载tomcat请参考:http://blog.csdn.net/only_tan/article/details/25110625 1.在tomcat中新建自己的项目: \apache-tomcat-6.0.39\webapps 目录下新建自己的项目文件夹,

open api应用开发最佳实践

在公司的内部系统中,会存在一些接入第三方数据的场景,例如在携程的app里能看到艺龙的机票,在美团的酒店列表里能找到去哪儿的酒店等.在自己的客户端或者H5里展示这些数据,一般会通过open-api对接的方式完成.最近正好在做一个open-api项目,场景是第三方可以通过调用open-api提供的http服务,在我方app里面提供第三方的团购服务.本文主要总结一下系统设计时的一些实践经验. 系统设计 系统包括2个应用,一个是web应用,一个是server应用,web应用对外提供http服务,serv

通过web对.exe程序进行更新和修改

实现功能:通过网站更新用户的软件,需要联网,也可以通过本地网站更新局域网用户软件. 根本实现:1.一个网站(我用的是自己的www.aq36.xyz ,本地就可以,可以用localhost)然后运行update.exe->{通过update.xml获取网址,然后查看当前版本号和网站的server.xml最高版本号对比.然后判断是否更新}. 2.更新就下载zip文件,解压替换并删除. 3.更新update.xml文档版本信息,跟新结束. 主要代码: 1.解析xml文件: /// <summary&