php基本文法
php //這個是php單行注釋 /* 這是多行注釋 */ //每條php語句使用英文分號結束——必須使用! //php是一門區分大小寫語言——但函數名除外 //php的任何一個變數名都要使用一個$符開頭。?>
變數和常量
php中,變數使用一個$符號開頭。變數通常是直接賦值(此時如果是第一次賦值也就表示定義)。
常量:設定一個其值不會也不應該改變的資料標識符(資料名字),比如數學上的“pi”。
$pi = 3.14; //這是變數
define(“PI”, 3.14); //這是定義一個常量,名字為“PI”,值為3.14,這裡也就類似賦值
常量定義的同時也就是賦值,且只是這一次性的!
常量和變數的區別:
- 常量前面沒有貨幣符號($)
- 常量只能用 define() 函數定義,而不能通過指派陳述式賦值
- 常量可以不用理會變數範圍的規則而在任何地方定義和訪問
- 常量一旦定義就不能被重新定義或者取消定義
- 常量的值只能是標量(即整數,浮點數,字串,布爾)
資料類型:
基本類型(標量類型):
布爾類型(bool,boolean): 只有兩個資料:true false
字元類型(string):可以是單引號,也可以是雙引號,還可以是“定界符”格式
整數類型(int,integer):
$v1 = 10;
$v2 = 012; //以0開始的數字表示“8進位”整數,這裡相當於10進位的10
$v3 = 0x1F; //以0x開始的數字表示16進位整數,這裡相當於10進位的31
浮點類型(float,double)
$v4 = 12.34;
$v5 = 12.34e5; //12.34乘以10的5次方
複合類型:
數群組類型:
物件類型:
特殊類型:
資源類型:表示某種“外界資料”的類型。
空類型(null):只有一個資料,就是“null”
3種字串類型的區別:
$str1 = "abc\ndefg1"; //雙引號字串中可以識別以下逸出字元:\" \n \r \t \\ \$$str2 = 'a\bc\ndefg2\\'; //單引號字串中只能識別以下逸出字元:\' \\。其中"\\"通常只用於最後一個字元//下述為定界符字串,其中的“ABCD”是隨意命名的一個符號。字串也就使用該符號結尾。//定界符字串中可以識別以下逸出字元:\n \r \t \\ \$$str3 = <<<ABCDabc\nde"f'g3這叫做定界符字串這個範圍的任何內容都是屬於str3這個字串的內容換行也可以直接換還可以寫html和js等等。。。比如:ABCD;//特別注意:上述一行定界符字串的結束符只能出現該名字本身和一個分號,不能有任何其他內容,比如空格,縮排(tab符)//注意:在雙引號字串和定界符字串中,可以直接識別變數並用該該變數的值來填充其內容。//如果想要不被識別,則需要使用"\$"來將該$符號進行轉義 $i = 5; echo "$i=" . $i ;
傳值方式:
值傳遞(賦值傳值):將一個變數的值拷貝一份,然後賦值給另一個變數,此時兩個變數的值相等(相同),但兩個變數是完全獨立的沒有關聯的變數。
預設情況下,在php中,單一資料型別和數組以及空類型使用值傳遞。
引用傳遞(引用傳值):將一個變數多代表的“地址”複製一份然後賦值給另一個變數,也就是相當於兩個變數同時指向(對應)一個相同的地址——此地址也就代表資料的位置。此時兩個變數值相等的同時,也表示這兩個變數其實指代的是一份共同的資料。
預設情況下,在php中,物件類型以及資源類型使用引用傳遞。
不過:
我們也可以人為將預設使用賦值傳遞的資料來使用引用傳值。文法是:
變數1 = &變數2;
舉例:
$v1 = 10;
$v2 = &$v1; //$v1和$v2此時代表“一個資料內容”
$v1++;
echo $v2;
對比js:
js中,只有預設傳值方式,沒有人為設定方式
js中:預設值傳遞的類型有:數字,字元,布爾,兩個特殊類型
預設引用傳值的類型有:數組, 對象
運算子:
l 算術運算子: + - * / % ++ --
- +號只做“算術運算”,沒有雙重含義。
- ++ --符號含義和用法完全同js。
l 寫在變數前,則:先自加(自減),再做其他運算(比如賦值)
l 寫在變數後,則:先做其他運算(比如賦值),再自加(自減)
- %號只對整數進行取與運算,如果不是整數,會先自動轉為整數再取餘
l 比較子:== != > >= < <= ===(全等於) !==(不全等於)
- ==通常表示“模糊相等”,===表示精確相等(只有資料類型和資料值都一樣才等)
- 模糊相等的各種情況請查手冊:附錄〉類型比較表
l 條件運算子:(expr1) ? (expr2) : (expr3),例:
- 含義:對錶達式exp1進行求值判斷,判斷結果如果是true,則整個運算式的結果就是exp2,否則整個運算式的結果是exp3
- $v1 = $fs>60 ? "及格" : "補考" ; //則v1根據fs的值有兩個情況
- 補充知識:一元運算子有:!, ++, --, ~,, 二元運算子就是我們用得最多的運算子,三元運算子就這一個。
l 邏輯運算子:&&(與) ||(或) ! (非)
- 邏輯與&&: 只兩個資料都是true的時候,結果才是true
- 邏輯或||: 只要有一個資料是true的時候,結果就是true
- 邏輯非!: 取邏輯資料的相反值。
l 字串運算子:. (即英文句號) .=(即類似“+=”)
- .=只是一個“簡寫法”而已,$v1 = $v1 . “abc”; è $v1 .= “abc”;
l 位元運算符:&(與) |(或) ~(非) ^(異或) <<(左移) >>(右移)
- 位元運算符都是針對數位二進位來進行的。
- 按位與&:只有兩個對應位上的數字都是1的時候結果才是1
- 按位或|:只要有一個對應位上的數字是1,結果就是1
- 按位非~:取反,即1變成0,0變成1
- 按位異或^:兩個對應位上的數字不同的時候結果就是1
l 賦值運算子: = += -= *= /= %= .=
運算子的優先順序問題:基本同js。
資料類型轉換
在js中,基本沒有資料類型轉換的概念,實際的轉換都是“自動發生”的——預設轉換。
js中有兩個“類似”類型轉換的函數: parseInt(….) parseFloat(…)
php中,既有預設轉換,也有強制轉換。
預設轉換舉例:
$v1 = 10 - “3”; //7; $v2 = 10 + “3”; //13; $v3 = 10 + “3abc”; //13; $v4 = 10 + “3.5abc”; //13.5; $v5 = 10 + “abc3”; //10; $v5 = 10 + “abc”; //10 $v5 = “10” + “abc”; //10 $v5 = “10ABC” + “5abc”; //15 $v5 = “ABC10” + “abc5”; //0 $v5 = “ABC” + “abc”; //0
………………….凡是使用算術運算子進行運算,都會“看成”數字,如果實在轉不成一個數字,也會當做0來進行計算。
強制轉換:
文法: (要轉成的目標類型)資料; 舉例: $v1 = (int) “3.5abc”; //3;int類型 $v1 = (float) “3.5abc”; //3.5; //這裡其實是float類型 $v1 = (string) 3; //”3”; $v1 = (bool) “3.5”; //true
——精選將一個資料轉換為bool類型的時候:查手冊:附錄〉類型比較表〉對變數 $x 進行比較 〉 if($x)列
以上就介紹了php基礎學習筆記(12),包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。