首页 > php学习 > php实现生产不重复的6位数字+2位字母

php实现生产不重复的6位数字+2位字母

2016年4月21日 发表评论 阅读评论

最近要实现一个功能,用php生产一个8位不重复的编号(前2位是字母,后6位是数字),用了2套方案:

第一套是实现按数字增长,比如:

AA000000->AA000001->…->AA999999->AB000000->AB000001->…->YY999999

第二套是实现按字母增长后增长数字,比如:

AA000000->AB000000->…->AY000000->AA000001->AB000001->…->YY999999

方法1:

function getNewBindCode($oldCode){
		if(empty($oldCode)){return 'AA000000';}
		$old_en_1=substr($oldCode,0,1);
		$old_en_2=substr($oldCode,1,1);
		$old_shuzi=intval(substr($oldCode,2));
		if($old_shuzi==999999){
			$enToShuzi=array('A'=>1,'B'=>2,'C'=>3,'D'=>4,'E'=>5,'F'=>6,'G'=>7,'H'=>8,'J'=>9,'K'=>10,'L'=>11,'M'=>12,'N'=>13,'P'=>14,'Q'=>15,'R'=>16,'S'=>17,'T'=>18,'U'=>19,'V'=>20,'W'=>21,'X'=>22,'Y'=>23);
			$old_en_1=$enToShuzi[$old_en_1];
			$old_en_2=$enToShuzi[$old_en_2];
			if($old_en_2==23){
				$new_en_1=$old_en_1+1;
				$new_en_2=1;
			}
			else {
				$new_en_1=$old_en_1;
				$new_en_2=$old_en_2+1;
			}
			$new_en=array_search($new_en_1,$enToShuzi).array_search($new_en_2,$enToShuzi);
			$new_shuzi='000000';
		}
		else {
			$new_en=$old_en_1.$old_en_2;
			$new_shuzi=$old_shuzi+1;
		}
		switch(strlen($new_shuzi)){
			case 1:$new_shuzi='00000'.$new_shuzi;break;
			case 2:$new_shuzi='0000'.$new_shuzi;break;
			case 3:$new_shuzi='000'.$new_shuzi;break;
			case 4:$new_shuzi='00'.$new_shuzi;break;
			case 5:$new_shuzi='0'.$new_shuzi;break;
		}
		return $new_en.$new_shuzi;
	}

方法2:

function getNewBindCode($oldCode){
		if(empty($oldCode)){return 'AA000000';}
		$enToShuzi=array('A'=>1,'B'=>2,'C'=>3,'D'=>4,'E'=>5,'F'=>6,'G'=>7,'H'=>8,'J'=>9,'K'=>10,'L'=>11,'M'=>12,'N'=>13,'P'=>14,'Q'=>15,'R'=>16,'S'=>17,'T'=>18,'U'=>19,'V'=>20,'W'=>21,'X'=>22,'Y'=>23);
		$old_en_1=$enToShuzi[substr($oldCode,0,1)];
		$old_en_2=$enToShuzi[substr($oldCode,1,1)];
		$old_shuzi=intval(substr($oldCode,2));
		if($old_en_2==23){//是Y
			if($old_shuzi==999999){
				$new_en_1=$old_en_1+1;
				$new_en_2=1;
				$new_shuzi=0;
			}
			else {
				$new_en_1=$old_en_1;
				$new_en_2=1;
				$new_shuzi=$old_shuzi+1;
			}
		}
		else {
			$new_en_1=$old_en_1;
			$new_en_2=$old_en_2+1;
			$new_shuzi=$old_shuzi;
		}
		switch(strlen($new_shuzi)){
			case 1:$new_shuzi='00000'.$new_shuzi;break;
			case 2:$new_shuzi='0000'.$new_shuzi;break;
			case 3:$new_shuzi='000'.$new_shuzi;break;
			case 4:$new_shuzi='00'.$new_shuzi;break;
			case 5:$new_shuzi='0'.$new_shuzi;break;
		}
		$new_en=array_search($new_en_1,$enToShuzi).array_search($new_en_2,$enToShuzi);
		return $new_en.$new_shuzi;
	}

使用方法:

第一次:echo getNewBindCode(”);

第二次以后,用上次得到的传入参数,echo getNewBindCode($preCode);

分类: php学习 标签: , , ,
  1. 本文目前尚无任何评论.
您必须在 登录 后才能发布评论.
css.php