首頁  >  文章  >  後端開發  >  ThinkPHP和PHP一些查詢小技巧分享

ThinkPHP和PHP一些查詢小技巧分享

小云云
小云云原創
2018-03-09 15:06:531162瀏覽

本文主要和大家分享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[&#39;getmaxnum&#39;]||$temp_num>=$val[&#39;totaltree&#39;]||$val[&#39;totaltree&#39;]<=0) { unset($propertyArr[$key]); }else { $treeNum += $val[&#39;totaltree&#39;]; } }

4:常用函數

a)fmod() 函数返回除法的浮点数余数。 
b)unset($saveData);销毁数组
c)strtotime(date(&#39;Y&#39;).&#39;-01-01&#39;);把时间变为时间戳的函数 
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(&#39;user&#39;)->distanct(true)->field(&#39;score&#39;)->order(&#39;score asc&#39;)->select();

9:thinkPHP在字段值上自增或自減

$newM->where(&#39;id=&#39;.$cid)->setInc(&#39;browser&#39;,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后的输出语句");
    }
  }
}

相關推薦:

php查詢相似字串的方法

利用php查詢mysql表是否存在的方法總結

thinkPHP查詢方式小結#

以上是ThinkPHP和PHP一些查詢小技巧分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn