This article mainly shares with you some query tips in ThinkPHP and PHP, hoping to help everyone.
1: Related query and query all fields with the same field names
$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: Query statements that remove duplicate values according to conditions
M('propertytake')->group('batchnum')->where($w)->select();
3: Remove queries in loops Arrays that do not meet the conditions in 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: Commonly used functions
a)fmod() 函数返回除法的浮点数余数。 b)unset($saveData);销毁数组 c)strtotime(date('Y').'-01-01');把时间变为时间戳的函数 d)isMobile();判断当前用户是否手机 e)array_push($arr,$val);//$arr被添加的数组,$val为添加的值
5: ThinkPHP transaction processing example://Open transaction processing local data
M()->startTrans(); //提交 M()->commit(); //不提交 M()->rollback();
6 :json parsing json_decode();json encryption json_encode(value);
7: Call the parent class (inherited class)
parent::memaddress($list['province'],$list['city'],$list['district']);//parent::是父的意思,memaddress是父类中的函数
8: Filter query of query method
distanct(true) 例: $data=M('user')->distanct(true)->field('score')->order('score asc')->select();
9: thinkPHP increases or decreases the field value
$newM->where('id='.$cid)->setInc('browser',1); //browser字段值自增1,setDec是自减
10: Various loops (for forech….) The difference between return, break and continue when jumping out of the loop
break is used to completely end a cycle Loop, jump out of the loop body. No matter what kind of loop, once a break is encountered in the loop body, the system will completely end the loop and start executing the code after the loop. break can not only end the loop in which it is located, but also end its outer loop. At this time, a label needs to be followed immediately after break. This label is used to identify an outer loop. A label in Java is an identifier followed by an English colon (:). And it must be placed before the loop statement to be effective.
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; } } } } }
The function of continue is somewhat similar to break. The difference is that continue only terminates this cycle and then starts the next cycle. And break completely terminates the loop.
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后的输出语句"); } } }
The return keyword is not specifically used to jump out of a loop. The function of return is to end a method. Once a return statement is executed within the loop body, the return statement will end the method and the loop will naturally end. Different from continue and break, return directly ends the entire method, no matter how many levels of loops this return is in.
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后的输出语句"); } } }
Related recommendations:
How to query similar strings in php
##Summary of how to use php to query whether a mysql table exists
The above is the detailed content of ThinkPHP and PHP share some query tips. For more information, please follow other related articles on the PHP Chinese website!