php按位与条件匹配算法

在条件固定的前提下,传参想匹配多个条件,可以使用按位与进行匹配,具体如下:

<?php

$ary = array(
//有未付订单
'有未付订单 __PAY_CODE '=> 0x00000001,
//备注和留言
'备注和留言 __FLAG_CODE '=> 0x00000002,
//物流公司标记
'物流公司标记 __LOGI_CODE '=> 0x00000004,
//产品不匹配
'产品不匹配 __PRODUCT_CODE '=> 0x00000008,
//用户多订单
'用户多订单 __MEMBER_CODE '=> 0x00000010,
//乡村物流标记
'乡村物流标记 __LOGI_LITE_CODE '=> 0x00000020,
//单订单
'单订单 __SINGLE_CODE '=> 0x00000040,
//多订单
'多订单 __MUTI_CODE '=> 0x00000080,
//仓库
'仓库 __BRANCH_CODE '=> 0x00000100,
//库存
'库存 __STORE_CODE '=> 0x00000200,
//异常
'异常 __ABNORMAL_CODE '=> 0x00000400,
//单订单且有备注
'单订单且有备注 __EXAMINE_CODE '=> 0x00000800,
//超卖订单
'超卖订单 __OVERSOLD_CODE '=> 0x00001000,
//淘宝订单优惠中有赠品信息
'淘宝订单优惠中有赠品信息 __PMTGIFT_CODE '=> 0x00002000,
'淘宝订单优惠中有赠品信息 __COMBINE_CODE '=> 0x00004000,
//CRM赠品信息
'CRM赠品信息 __CRMGIFT_CODE '=> 0x00008000,
//检测订单是否开发票
'检测订单是否开发票 __TAX_CODE '=> 0x00010000,
//检查物流到不到
'检查物流到不到 __LOGIST_ARRIVED '=> 0x00040000,

);

$testnum = $_GET['num'];
$html = "<table style='border:1px solid #e0e0e0;'><tr><td>序号</td><td>目标</td><td>&</td><td>状态码</td><td>结果</td><td>匹配结果(红色)</td></tr>";
$index =1;
foreach ($ary as $key => $value) {
$result = $value & $testnum;
$color = '';
if ($result > 0) {
$color = "style='color:red;'";
}
$html .= "<tr><td>".$index."</td><td>" . $testnum. "(".decbin($testnum).")</td><td>&</td><td>" . $value. "(".decbin($value).")</td><td>" . $result. "(".decbin($result).")</td><td ".$color.">". $key ."</td></tr>";
$index++;
}
echo $html."</table>";




测试:将上面的代码保存为test.php ,并放入运行环境, 在浏览器中输入

localhost/test.php?num=12


你会看到结果
[img]http://dl2.iteye.com/upload/attachment/0126/1675/b6408385-c8f4-377d-a154-4823c03eeae9.png[/img]


其中红色的为匹配上的条件。
[color=red]以二级制来进行与运算,利用相同位上为1来进行匹配[/color]。


如有不足, 欢迎指正。共同学习,共同进步。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值