国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP身份證校驗碼計算方法

2024-05-04 23:49:05
字體:
供稿:網(wǎng)友

中國(大陸)公民身份證號碼每一位所代表的意義,網(wǎng)上很多文章都有介紹,在此就不多說。其中身份證號碼的最后一位是校驗碼,跟據(jù)前17位計算得到。算法大 概是這樣:把前17位的每一個數(shù)字和一串加權(quán)因子相乘,再計算這些乘積的和;把這些乘積的和模11得到的數(shù)字作為序號,最后在一個校驗碼串中提取出與序號 相對應的字符。當然,網(wǎng)上也有不少的文章教大家計算這個校驗碼,下面我們將嘗試用PHP語言來完成這一工作,也許可以用于PHP開發(fā)中,如校驗用戶的身份證號碼是否正確。

假設某中國(大陸)公民的身份證號碼前17位是這個:44010221990101001(注:此人出生于2199年),那么我們跟據(jù)上面的算法嘗試寫幾行PHP代碼來完成校驗碼的計算。為了能讓大家更容易理解,我使用了較簡單的語句,請看代碼:

<?php//身份證號碼前17位,可以從各種數(shù)據(jù)源中獲得(如數(shù)據(jù)庫、用戶提交的表單等)$body = '44010221990101001';//加權(quán)因子$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);//校驗碼串$ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');//按順序循環(huán)處理前17位for ($i = 0;$i < 17;$i++) {//提取前17位的其中一位,并將變量類型轉(zhuǎn)為實數(shù)$b = (int) $body{$i};//提取相應的加權(quán)因子$w = $wi[$i];//把從身份證號碼中提取的一位數(shù)字和加權(quán)因子相乘,并累加$sigma += $b * $w;}//計算序號$number = $sigma % 11;//按照序號從校驗碼串中提取相應的字符。$check_number = $ai[$number];//輸出echo $body.$check_number;?>

運行以上代碼之后,可以算出該身份證的校驗碼為9。大家可以用自己身份證的前17位試試。

如果你明白上面的例子的話,就可以把這段代碼的一些語句合并,去除沒必要的變量,優(yōu)化得到如下代碼:

<?php$body = '44010221990101001';$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);$ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');for ($i = 0;$i < 17;$i++) {$sigma += ((int) $body{$i}) * $wi[$i];}echo $body.$ai[($sigma % 11)];?>

以上所述是小編給大家介紹的PHP身份證校驗碼計算方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 天峨县| 蒲江县| 章丘市| 监利县| 曲周县| 平山县| 长沙市| 隆林| 平舆县| 互助| 柘城县| 娄底市| 康平县| 阿拉善右旗| 子长县| 崇左市| 阿拉善左旗| 宽城| 新郑市| 油尖旺区| 六枝特区| 东乡县| 兰州市| 台安县| 洪雅县| 岐山县| 子洲县| 浪卡子县| 临沂市| 漳州市| 宝丰县| 阳高县| 永清县| 桑日县| 泰来县| 鲁甸县| 绿春县| 应城市| 垫江县| 开化县| 木里|