话不多说,直接上码:
/**$name,$isopen为传递的参数*/
function getUrl($name,$isopen){
$VvRequest = model("HSwitch"); //创建模型
$map = array();//定义数据查询
$map = ["name"=>$name
,"isopen"=>$isopen
];
$map = array_filter($map,array($this,'filtrfunction'));//移除掉参数为null或者''的键
$Vv = $VvRequest->where($map)->field("isopen,url")->select();//查询数据
}
//回调函数,避免移除掉带有false和0的数组
function filtrfunction($arr){
if($arr === '' || $arr === null){
return false;
}
return true;
}
思路:
以数组存储查询条件,然后利用模型进行查询。那么我们要的就是怎么判断数组里面的参数是null或者’’,如果是则把这个对应的键移除掉,这样一来就达到了实现动态sql查询的效果
方法解释:
1.array_filter(数组,[回调函数])函数是PHP自带的函数,如果不写回调函数的话,这个功能默认是会移除掉你传递进去的数组中的值为null,0,false以及""。具体例子自行百度即可。
2. filtrfunction(参数) 这是一个自定义的函数,具体功能就是根据传递的值判断里面的值是否为null或者''则返回false,因为array_filter的这个回调函数的原理是如果返回false,则会将对应的键和值删除掉。
3.具体调用方式便是array_filter($map,array($this,'filtrfunction'));
4.如此一来便可实现了通过这个方式清除掉数组中的null和'',最终实现动态sql的查询