国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 黔南| 佛山市| 乌兰察布市| 岢岚县| 南雄市| 祁阳县| 隆安县| 吉林市| 冕宁县| 元氏县| 遵化市| 松原市| 兴国县| 濮阳市| 民县| 慈溪市| 任丘市| 应用必备| 肃宁县| 宿松县| 南木林县| 道孚县| 农安县| 教育| 渝中区| 醴陵市| 庆城县| 额尔古纳市| 扶风县| 萨迦县| 辉南县| 皋兰县| 黄陵县| 榆中县| 开封市| 内丘县| 新建县| 南溪县| 正宁县| 炉霍县| 会泽县|