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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
php UTF-8、Unicode和BOM问题
May 18 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
php学习笔记之面向对象
Nov 08 PHP
php统计数组元素个数的方法
Jul 02 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
Symfony2函数用法实例分析
Mar 18 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
Javascript下的keyCode键码值表
2007/04/10 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
中专生毕业自我鉴定
2013/11/01 职场文书
数控专业应届生求职信
2013/11/27 职场文书
企业管理部经理岗位职责
2013/12/24 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
岗位明星事迹材料
2014/05/18 职场文书
物流专业求职信
2014/06/30 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
python批量创建变量并赋值操作
2021/06/03 Python
Python 中的 copy()和deepcopy()
2021/11/07 Python