php sprintf函數用法例子教程

來源:互聯網
上載者:User
  1. // 1. %% :把 %% 替換成 %
  2. $str = '測試一下 %% 這個參數,會被替換成什麼';
  3. echo sprintf($str);
  4. //返回結果: 測試一下 % 這個參數,會被替換成什麼(%%被替換成一個%)
  5. // 2. %b :該參數只能替換整型資料,如果是浮點型,只會取整數部分,會忽略小數點後面的資料。如果是非整型資料。返回 0
  6. $str = '參數 %b 會替換成位元';
  7. $arg = '10';
  8. echo sprintf($str,$arg);
  9. //返回結果:參數 1010 會替換成位元
  10. $arg = 10.23;
  11. echo sprintf($str,$arg);
  12. //返回結果:參數 1010 會替換成位元
  13. $arg = 'abc';
  14. echo sprintf($str,$arg);
  15. //返回結果:參數 0 會替換成位元
  16. // 3. %c 返回字元編碼的ASCII碼
  17. $arg = 65;
  18. $str = "數字 {$arg} 對應的ASCII碼為 %c ";
  19. echo sprintf($str,$arg);
  20. //返回結果:數字 65 對應的ASCII碼為 A
  21. // 4. %d 將一段字元裡的%d替換成int型,資料要求同 $b 相同
  22. $str = 'ID號為 %d ';
  23. $arg = -3;
  24. echo sprintf($str,$arg);
  25. //返回結果:ID號為 -3
  26. $arg = 4.5;
  27. echo sprintf($str,$arg);
  28. //返回結果:ID號為 4
  29. $arg = 'abc';
  30. echo sprintf($str,$arg);
  31. //返回結果:ID號為 0
  32. // 5. %s - 字串
  33. $str = "這是用來測試的sprintf的字串( %s )。今天消費了%f元。從鐘樓到小寨有%d站。上班";
  34. $arg = '%s';
  35. echo sprintf($str,$arg,6,5);
  36. //返回結果:這是用來測試的sprintf的字串( %s )。今天消費了6.000000元。從鐘樓到小寨有5站。上班
複製代碼

有關參數用法,測試:在對一張資料表所有資料做多個欄位更新時,如果使用迴圈更新的話,那是很耗費資源的,這裡就要用到我們sprintf()函數了。在資料庫批次更新時,一般採用 case then when end 的文法來做,基本文法,例如:

  1. UPDATA table
  2. SET field = CASE id
  3. WHEN 1 THEN 'value1'
  4. WHEN 2 THEN 'value2'
  5. WHEN 3 THEN 'value3'
  6. END
  7. WHERE id IN (1,2,3)
複製代碼

更新 table 設定 id = 1 的值為 value1, id = 2 的值為 value2 ,id = 3 的值為 value3,這樣參數上面的函數將sql語句結合成這樣SQL語句,只需一條SQL就可以進行批次更新

例子:

  1. //比如 id 對應的值為以下數組
  2. $info = array(1=>'張三',2=>'李四',3=>'王五');
  3. $ids = implode(',',array_keys($info)) //擷取所有的ID字串
  4. //組合SQL
  5. $sql = "UPDATA user SET username = CASE id";
  6. foreach($info as $id=>$username){
  7. $sql .= sprintf("WHEN %d THEN %s",$id,$username);
  8. }
  9. $sql .= "END WHERE id IN ($ids)";
  10. // $model->query($sql)
複製代碼

以上可以完成批次更新的操作,其中where子句確保只有3行資料執行。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.