<?php //這個是php單行注釋 /* 這是多行注釋 */ //每條php語句使用英文分號結束——必須使用! //php是一門區分大小寫的語言——但函數名除外 //php的任何一個變量名都要使用一個$符開頭。 ?>
php中,變量使用一個$符號開頭。變量通常是直接賦值(此時如果是第一次賦值也就表示定義)。
常量:設定一個其值不會也不應該改變的數據標識符(數據名字),比如數學上的“pi”。
$pi = 3.14; //這是變量
define(“PI”, 3.14); //這是定義一個常量,名字為“PI”,值為3.14,這裡也就類似賦值
常量定義的同時也就是賦值,且只是這一次性的!
常量和變量的區別:
基本類型(標量類型):
布爾類型(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”
$str1 = "abc\ndefg1"; //雙引號字符串中可以識別以下轉義字符:\" \n \r \t \\ \$ $str2 = 'a\bc\ndefg2\\'; //單引號字符串中只能識別以下轉義字符:\' \\。其中"\\"通常只用於最後一個字符 //下述為定界符字符串,其中的“ABCD”是隨意命名的一個符號。字符串也就使用該符號結尾。 //定界符字符串中可以識別以下轉義字符:\n \r \t \\ \$ $str3 = <<<ABCD abc\nde"f'g3 這叫做定界符字符串 這個范圍的任何內容都是屬於str3這個字符串的內容 換行也可以直接換 還可以寫html和js等等。。。比如: <hr /> <script> alert("dddd"); </script> ABCD; //特別注意:上述一行定界符字符串的結束符只能出現該名字本身和一個分號,不能有任何其他內容,比如空格,縮進(tab符) //注意:在雙引號字符串和定界符字符串中,可以直接識別變量並用該該變量的值來填充其內容。 //如果想要不被識別,則需要使用"\$"來將該$符號進行轉義 $i = 5; echo "$i=" . $i ;
值傳遞(賦值傳值):將一個變量的值拷貝一份,然後賦值給另一個變量,此時兩個變量的值相等(相同),但兩個變量是完全獨立的沒有關聯的變量。
默認情況下,在php中,簡單數據類型和數組以及空類型使用值傳遞。
引用傳遞(引用傳值):將一個變量多代表的“地址”復制一份然後賦值給另一個變量,也就是相當於兩個變量同時指向(對應)一個相同的地址——此地址也就代表數據的位置。此時兩個變量值相等的同時,也表示這兩個變量其實指代的是一份共同的數據。
默認情況下,在php中,對象類型以及資源類型使用引用傳遞。
不過:
我們也可以人為將默認使用賦值傳遞的數據來使用引用傳值。語法是:
變量1 = &變量2;
舉例:
$v1 = 10;
$v2 = &$v1; //$v1和$v2此時代表“一個數據內容”
$v1++;
echo $v2;
對比js:
js中,只有默認傳值方式,沒有人為設定方式
js中:默認值傳遞的類型有:數字,字符,布爾,兩個特殊類型
默認引用傳值的類型有:數組, 對象
l 算術運算符: + - * / % ++ --
l 寫在變量前,則:先自加(自減),再做其他運算(比如賦值)
l 寫在變量後,則:先做其他運算(比如賦值),再自加(自減)
l 比較運算符:== != > >= < <= ===(全等於) !==(不全等於)
l 條件運算符:(expr1) ? (expr2) : (expr3),例:
l 邏輯運算符:&&(與) ||(或) ! (非)
l 字符串運算符:. (即英文句號) .=(即類似“+=”)
l 位運算符:&(與) |(或) ~(非) ^(異或) <<(左移) >>(右移)
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)列