在条件固定的前提下,传参想匹配多个条件,可以使用按位与进行匹配,具体如下:
测试:将上面的代码保存为test.php ,并放入运行环境, 在浏览器中输入
你会看到结果
[img]http://dl2.iteye.com/upload/attachment/0126/1675/b6408385-c8f4-377d-a154-4823c03eeae9.png[/img]
其中红色的为匹配上的条件。
[color=red]以二级制来进行与运算,利用相同位上为1来进行匹配[/color]。
如有不足, 欢迎指正。共同学习,共同进步。
<?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]。
如有不足, 欢迎指正。共同学习,共同进步。