博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP —— 识别运算符实现逻辑比较
阅读量:5977 次
发布时间:2019-06-20

本文共 2096 字,大约阅读时间需要 6 分钟。

最近遇到一个功能的开发,大致意思就是根据用户输入的条件,进行相关的比较操作。本来打算使用用户选择运算符的方式,但是后来结合项目实际,发现需要使用用户输入的自定义运算比较现实一点。大致意思就是:

1、用户输入:

 

a.多条直接为或的关系(用户输入)

time>12time=9

 

b.单条并的关系(用户输入)

time>12&&time<25

 

c.可用比较运算符(>、<、<=、=、!=)

d.要求比较的对象卸载前边。

 

2、根据实际需求,写出以下两个函数:

12&&time<=25'); var_dump(getCompare('time','18',$condition));  //这里的比较对象“time”也可以通过用户输入获取,需要加一个正则,我这项目不需要 // $condition :array(): mtime>24 / mtime <23 / mtime=53 / mtime=12||mtime>12 function getCompare($name, $data, $condition){ if (!is_array($condition)) { return false; } foreach ($condition as $key => $value) { $value = str_replace($name, '', $value); if (!strpos($value, '&&')) { return explainCompare($data, $value); }else{ $subCon = explode('&&', $value); foreach ($subCon as $v) { if(!explainCompare($data,$v)){ return false; } } return true; } } } function explainCompare($data, $condition){ if(!preg_match('/^[<>=!%]+/', $condition, $operator)){ //$operator[0] return false; } $value = str_replace($operator[0], '', $condition);//x>12 => 12($value) echo $operator[0]; echo "\n",$value,"\n"; switch ($operator[0]) { case '>': return ($data > $value); break; case '>=': return ($data >= $value); break; case '<': return ($data < $value); break; case '<=': return ($data <= $value); break; case '==': return ($data == $value); break; case '<>': return ($data <> $value); break; case '!=': return ($data != $value); break; default: return false; break; } }?>

 

望见者多指正,请不要冰冷的掠过~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

转载于:https://www.cnblogs.com/picaso/p/3445468.html

你可能感兴趣的文章
[J2ME]Nokia播放音乐时发生MediaException的解决办法
查看>>
【转】CSS 与 HTML5 响应式图片
查看>>
代码重构(五):继承关系重构规则
查看>>
使用jquery-easyui写的CRUD插件(2)
查看>>
redis.conf 配置档详解
查看>>
Windows App开发之集合控件与数据绑定
查看>>
Android:Plug-in com.android.ide.eclipse.adt was unable to load class android
查看>>
一分钟了解阿里云产品:对象存储OSS概述
查看>>
mvvm
查看>>
WWDC 2018:iOS 12 通知的新特性
查看>>
SharePreference源码学习和多进程的场景
查看>>
Android-ffmpeg编译so文件
查看>>
自2018年以来我不知道的事情-Dan Abramov
查看>>
React Ways1——函数即组件
查看>>
安卓判断前后台
查看>>
go设计模式之代理模式
查看>>
抓取猫眼电影top100的正则、bs4、pyquery、xpath实现方法
查看>>
git 命令
查看>>
介绍一款facebook信息收集工具FBI
查看>>
五分钟创建一个自己的NPM包
查看>>