本文主要和大家分享ThinkPHP和PHP一些查询小技巧,希望能帮助到大家。
1:关联查询并有的字段名相同查询全部字段
$goodsNum = $cartlistM->field('*,a.id as cid')->join('Goods as b on a.goods_id = b.id')->where(array('a.id' =>$_POST['cartID'] ))->find();
2:查询按条件去处重复值的语句
M('propertytake')->group('batchnum')->where($w)->select();
3:在循环中去除查询selsect()中不符合条件的数组
foreach ($propertyArr as $key=>$val) { $w['mid'] = $this->mid; $w['property_id'] = $val['id']; //查询期数是否已领满9年 $hasGetYear = count(M('propertytake')->group('batchnum')->where($w)->select());//查询当前资产在本期已收成的消耗资源数量 $w['batchnum'] = $setBatch; $temp_num = M('propertytake')->where($w)->sum('nums'); if(empty($temp_num)) { $temp_num = 0; }if ($hasGetYear >= $goodsArr['getmaxnum']||$temp_num>=$val['totaltree']||$val['totaltree']<=0) { unset($propertyArr[$key]); }else { $treeNum += $val['totaltree']; } }
4:常用函数
a)fmod() 函数返回除法的浮点数余数。 b)unset($saveData);销毁数组 c)strtotime(date('Y').'-01-01');把时间变为时间戳的函数 d)isMobile();判断当前用户是否手机 e)array_push($arr,$val);//$arr被添加的数组,$val为添加的值
5:thinkPHP的事务处理 例://开启事务处理本地数据
M()->startTrans(); //提交 M()->commit(); //不提交 M()->rollback();
6:json解析json_decode();json加密json_encode(value);
7:调用父类(被继承类)
parent::memaddress($list['province'],$list['city'],$list['district']);//parent::是父的意思,memaddress是父类中的函数
8:查询方法之过滤查询
distanct(true) 例: $data=M('user')->distanct(true)->field('score')->order('score asc')->select();
9:thinkPHP在字段值上自增或自减
$newM->where('id='.$cid)->setInc('browser',1); //browser字段值自增1,setDec是自减
10:各种循环(for forech ….) 跳出循环return,break,continue三者区别
break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。 break不仅可以结束其所在的循环,还可结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。Java中的标签就是一个紧跟着英文冒号(:)的标识符。且它必须放在循环语句之前才有作用。
public class BreakTest2 { public static void main(String[] args){ // 外层循环,outer作为标识符 outer: for (int i = 0 ; i < 5 ; i++ ){ // 内层循环 for (int j = 0; j < 3 ; j++ ){ System.out.println("i的值为:" + i + " j的值为:" + j); if (j == 1){ // 跳出outer标签所标识的循环。 break outer; } } } } }
continue的功能和break有点类似,区别是continue只是中止本次循环,接着开始下一次循环。而break则是完全中止循环。
public class ContinueTest { public static void main(String[] args){// 一个简单的for循环 for (int i = 0; i < 3 ; i++ ){ System.out.println("i的值是" + i); if (i == 1){ // 忽略本次循环的剩下语句 continue; } System.out.println("continue后的输出语句"); } } }
return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。 一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。
public class ReturnTest { public static void main(String[] args){ // 一个简单的for循环 for (int i = 0; i < 3 ; i++ ){ System.out.println("i的值是" + i); if (i == 1){ return; } System.out.println("return后的输出语句"); } } }
相关推荐:
以上是ThinkPHP和PHP一些查询小技巧分享的详细内容。更多信息请关注PHP中文网其他相关文章!