首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 基礎語法核心筆記:變數、常數、資料類型與運算子

     編輯:PHP 相關知識

基本語法規則

  • 單行註解:// 或 #
  • 多行註解:/* ... */
  • 語句以分號 ; 結尾(必要)
  • 大小寫敏感:變數、常數、類別名稱均區分大小寫;函數名不區分
  • 變數以 $ 開頭:$var = 1;

變數與常數

特性變數常數
定義方式直接賦值 $pi = 3.14;define('PI', 3.14);
名稱前綴必須有 $無 $
修改性可隨時修改定義後不可變
作用域受區域/全域規則限制全域可存取,不受作用域限制
資料型別任意型別僅限標量

八大資料類型

標量類型(4 種)

  • Boolean:true / false
  • Integer:十進位 10、八進位 012(=10)、十六進位 0x1F(=31)
  • Float:12.34、科學標記 1.2e3(=1200)
  • String:三種定義方式差異見下表

字串三種定義差異對照

特性單引號雙引號Heredoc (<<<)
變數解析否是是
跳脫字元\' \\\n \r \t \\ \$ 等同雙引號
多行支援否否是
結尾標記單引號雙引號自訂標識符(須獨佔一行、無縮排)
$i = 5;
echo "$i = $i";      // 5 = 5
echo '$i = $i';      // $i = $i
echo <<

複合類型

  • Array:有序映射,鍵可為整數或字串
  • Object:類別實例

特殊類型

  • Resource:外部資源控制代碼(如資料庫連線、檔案指標)
  • NULL:僅有 null 一值,表示無值

傳值 vs 參考傳遞

$a = 10;
$b = &$a; // 參考
$b = 20;
echo $a; // 20

// 物件預設參考行為
$obj1 = new stdClass();
$obj1->val = 1;
$obj2 = $obj1; // 複製 handle
$obj2->val = 2;
echo $obj1->val; // 2

運算子完整分類

算術

+ - * / % **(冪,PHP 5.6+)
++ -- 前置/後置差異同 C/Java

比較

類型預設行為強制參考語法
標量、陣列、NULL值傳遞(複製)$b = &$a;
Object、Resource參考傳遞(複製控制代碼)預設即為參考
運算子名稱說明
==相等型別轉換後比較(鬆散比較)
===全等型別與值皆相同
!= / <>不相等鬆散比較
!==不全等型別或值不同
<=>太空船PHP 7+,回傳 -1/0/1,適合 usort

邏輯

&& (AND) 、 || (OR) 、 ! (NOT) — 短路求值

字串

. 串接 、 .= 串接賦值

位元

& | ^ ~ << >> 僅針對整數二進位運算

賦值

= += -= *= /= %= .= &= |= ^= <<= >>=

三元/Null 合併(PHP 7+)

$result = $condition ? 'yes' : 'no';           // 三元
$name = $inputName ?? 'Guest';                 // Null 合併
$name = $inputName ?: 'Guest';                 // Elvis 運算子(假值時用預設)

型別轉換

自動轉換(語境轉換)

10 + "3abc"    // 13 (字串開頭數字)
10 + "abc"     // 10 (非數字開頭視為 0)
"10" + "5"     // 15
"abc" + "def"  // 0

強制轉換(Cast)

(int) "3.5abc"   // 3
(float) "3.5abc" // 3.5
(string) 123     // "123"
(bool) ""        // false
(bool) "0"       // false (注意!)
(bool) "false"   // true (非空字串皆為 true)

轉 Boolean 判斷表(必背)

值(bool) 結果
false, 0, 0.0, "", "0", [], nullfalse
其他所有值(含 "false", [-1], new StdClass())true

運算子優先級(高→低)

  1. clone new
  2. **
  3. ++ -- ~ (int) (float) (string) (array) (object) (bool) @
  4. instanceof
  5. !
  6. * / %
  7. + - .
  8. << >>
  9. < <= > >=
  10. == != === !== <=>
  11. &
  12. ^
  13. |
  14. &&
  15. ||
  16. ??
  17. ? :
  18. = += -= *= **= /= .= %= &= |= ^= <<= >>= ??=
  19. and
  20. xor
  21. or
  22. ,

建議:複雜表達式務必加括號明確優先級,提升可讀性並避免 Bug。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved