PHP实现通过Luhn算法校验信用卡卡号是否有效


Posted in PHP onMarch 23, 2015

本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下:

$numbers = "49927398716 49927398717 1234567812345678 1234567812345670";
foreach (split(' ', $numbers) as $n)
  echo "$n is ", luhnTest($n) ? 'valid' : 'not valid', '</br>';
 
function luhnTest($num) {
  $len = strlen($num);
  for ($i = $len-1; $i >= 0; $i--) {
    $ord = ord($num[$i]);
    if (($len - 1) & $i) {
      $sum += $ord;
    } else {
      $sum += $ord / 5 + (2 * $ord) % 10;
    }
  }   
  return $sum % 10 == 0;
}

运行结果

49927398716 is valid
49927398717 is not valid
1234567812345678 is not valid
1234567812345670 is valid

下面是一个更为简洁的代码:

function luhn_test($num) {

    $str = '';

    foreach( array_reverse( str_split( $num ) ) as $i => $c ) $str .= ($i % 2 ? $c * 2 : $c );

    return array_sum( str_split($str) ) % 10 == 0;

}

foreach (array('49927398716','49927398717','1234567812345678','1234567812345670') as $n)

echo "$n is ", luhn_test($n) ? 'valid' : 'not valid', "</br>\n";

输出结果如下

49927398716 is valid
49927398717 is not valid
1234567812345678 is not valid
1234567812345670 is valid

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
一些常用的php函数
Dec 06 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
php的memcached客户端memcached
Jun 14 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
PHP 文件编程综合案例-文件上传的实现
Jul 03 PHP
php链表用法实例分析
Jul 09 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP设计模式之观察者模式定义与用法分析
Apr 04 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 #PHP
php实现约瑟夫问题的方法小结
Mar 23 #PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 #PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 #PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 #PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 #PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 #PHP
You might like
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
详解vue v-model
2020/08/31 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python解析html开发库pyquery使用方法
2014/02/07 Python
Django中的Signal代码详解
2018/02/05 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
python的concat等多种用法详解
2018/11/28 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
美国Max仓库:Max Warehouse
2020/05/31 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
解除劳动合同协议书
2014/04/14 职场文书
绿色小区申报材料
2014/08/22 职场文书
2014年后勤工作总结
2014/11/18 职场文书
2015年教务工作总结
2015/05/23 职场文书
导游词之张家界
2019/10/31 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电