一奕污、PHP基本語法
1.PHP標記
1)標準的標記
<?php
php代碼
?>
PHP 支持與HTML混編 ,混編的文件名珊蟀,以.php結尾菊值。
官方推薦標記。
如果是純PHP代碼建議省略結束標記育灸。
2)<script language=”php”>代碼</script>
3)<? 代碼 腻窒?>
短標記
改完配置文件,需重啟APACHE
4)<%代碼%>
ASP風格標記
修改配置文件
重啟apache
5)enctype
<form enctype="value">
- enctype 屬性規(guī)定在發(fā)送到服務器之前應該如何對表單數(shù)據(jù)進行編碼磅崭。
-
默認地儿子,表單數(shù)據(jù)會編碼為 "application/x-www-form-urlencoded"。就是說砸喻,在發(fā)送到服務器之前柔逼,所有字符都會進行編碼(空格轉換為 "+" 加號,特殊符號轉換為 ASCII HEX 值)割岛。
image.png
2.語句結束標記
- ;一行語句結束以分號結尾愉适。
- js可以不加分號(自動判斷結束,補全分號)癣漆。
-
但PHP要嚴格執(zhí)行维咸,否則解析出錯;
image.png
3.注釋
- 被注釋的代碼將不被執(zhí)行惠爽。
- 在注釋里面我們可以寫程序的說明癌蓖,可以更好的有利于團隊合作。
1)行注釋
//
單行代碼不被執(zhí)行
2)塊注釋
/多行注釋/注釋多行代碼
二婚肆、變量
1.變量介紹
- 簡言之租副,存儲值的容器。$stuNum = 4;
- 在成語運行過程中较性,隨時可以發(fā)生變化的量用僧。
1)定義變量
$開頭后面接變量名。
2)變量名的規(guī)則
遵循標識符的命名規(guī)則赞咙,標識符是指在程序員編程過程中起的名字永毅,
如:變量名,常量人弓,函數(shù)名沼死。
標識符的命名規(guī)則:
①數(shù)字字母下滑線組成,不能以數(shù)字開頭崔赌。
②變量名嚴格區(qū)分大小寫
③不能使用系統(tǒng)關鍵字
④建議英文命名意蛀,見名識意。
-
age 年齡
- 通常有兩種方式
- 下滑線命名:
$goods_info 商品信息健芭。
以下劃線分割兩個或兩個以上的單詞
下劃線線命名一般用于變量名 - 駝峰命名:
image.png
a 大駝峰
goodsInfo
常用于函數(shù)名
- 下滑線命名:
3)可變變量
是一種特殊的變量若贮。
它的變量名 是 另外一個變量的值省有。
4)變量在內存中的表現(xiàn)形式
- 變量由變量名和變量值組成;
$a =100; - 內存谴麦,用來存儲運行的的程序蠢沿。
-
變量名,和變量值匾效,是存儲在內存中的不同位置舷蟀。
image.png - 內存組成:
棧區(qū):空間小,運行速度快面哼,存儲野宜,變量名,函數(shù)名魔策,常量名等匈子。
堆區(qū):空間大,但運行速度慢闯袒,一般存儲復雜數(shù)據(jù)(數(shù)組旬牲,和對象等)。 - 全局數(shù)據(jù)區(qū): 存儲變量值搁吓,常量值等原茅。
- 代碼區(qū): 存儲函數(shù),方法等堕仔。
- 案例
$a =100;
創(chuàng)建變量時擂橘,將變量值100 存儲在全局數(shù)據(jù)區(qū)的變量區(qū)(產(chǎn)生存儲地址0x10001000)
在棧區(qū)開辟空間,存儲變量名$a,將變量值得存儲地址摩骨,存儲在變量命中通贞。
- 讀取變量時
讀取$a, 先到棧區(qū)恼五,拿到在變量區(qū)的存儲地址0x10001000,去此地址去讀取值昌罩。
2.變量操作
1)變量聲明
- 變量聲明和賦值同時進行。
- 變量不需要指定數(shù)據(jù)類型
- PHP變量有類型灾馒。
變量的值決定了變量的類型茎用。 -
PHP是弱類型語言。
在程序運行變量還可以設置為其他類型的值
image.png
2)獲取變量的值
3)常見的輸出語句
-
Echo 語句
輸出字符串睬罗,變量或者表達式轨功。
同時可以輸出多個。是語言結構
image.png -
Print語句
也可以輸出字符串容达,變量或表達式古涧。
不支持輸出多個。也是語言結構
image.png -
var_dump
輸出一個或者多個變量的類型花盐,長度和值羡滑。
一般用于打印復雜變量(數(shù)組和對象等)
image.png -
print_r 輸出變量的值
輸出結果較var_dump簡潔菇爪。
image.png
4)變量值的修改
age= 19;
5)刪除變量
- 刪除變量名與變量值之間的關系。形成未定義變量柒昏。
- 變量名和變量值不會立即消失凳宙。
- PHP有專門的垃圾回收機制來處理。
unset($var)
6)mysql_connect() 函數(shù)打開非持久的 MySQL 連接
格式
mysql_connect(server,user,pwd,newlink,clientflag)
<?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
// 一些代碼...
mysql_close($con);
?>
3.變量傳值
將一個變量傳遞給另外一個變量昙楚。
1) 值傳遞
- 獲取$num1的值近速。
- 在變量區(qū)存儲100,產(chǎn)生新地址0x10001001诈嘿,
- 在棧區(qū)堪旧,創(chuàng)建變量名
num2中
-
修改一個變量的值,另外一個變量不會改變奖亚。
image.png
刪除一個變量淳梦,對另外一個變量沒有影響。
image.png
2)引用傳遞
地址傳遞
執(zhí)行過程
- 先獲取$num1值的地址0x10001000;
- 在棧區(qū)開辟空間作郭,創(chuàng)建變量$n2,存儲地址0x10001000;
-
修改一個變量的值陨囊,另外一個變量也會改變。
image.png
刪除一個變量夹攒,對另外一個沒有影響蜘醋。
image.png
4.預定義變量
PHP提前定義好的變量,直接使用咏尝,無需定義压语。
1)$_SERVER
["SERVER_NAME"]=> 服務器名
string(15) "www.default.com"
["SERVER_ADDR"]=> 服務器地址
string(9) "127.0.0.1"
["SERVER_PORT"]=> 服務器端口號
string(2) "80"
["REMOTE_ADDR"]=> 客戶機地址(remote,遠程的意思)
string(9) "127.0.0.1"
2)$_GET
HTTP GET方式提交過來的數(shù)據(jù)
通過瀏覽器地址欄傳遞數(shù)據(jù)编检,數(shù)據(jù)的安全性較低
案例:
form.html 文件代碼
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>
<form action="welcome.php" method="get">
名字: <input type="text" name="fname">
年齡: <input type="text" name="age">
<input type="submit" value="提交"></form>
</body>
</html>
當用戶點擊 "Submit" 按鈕時胎食,發(fā)送到服務器的 URL 如下所示: http://www.runoob.com/welcome.php?fname=Runoob&age=3
"welcome.php" 文件現(xiàn)在可以通過 _GET 數(shù)組中的鍵):
歡迎 <?php echo $_GET["fname"]; ?>!<br>
你的年齡是 <?php echo $_GET["age"]; ?> 歲允懂。
3)$_POST
HTTP POST方式提交過來的數(shù)據(jù)
4)$_REQUEST
POST + GET的數(shù)據(jù)
三厕怜、常量
1.說明
程序運行過程中,值不會發(fā)生改變的量蕾总。
常量不能修改和刪除酣倾。
1)語法
define(常量名,常量值谤专,true/false);
2)注意
- 常量默認區(qū)分大小寫躁锡。
- 常量名推薦使用大寫
- 常量不可以重復定義和修改數(shù)據(jù)。
-
如果第三個參數(shù)設為true,常量不區(qū)分大小寫置侍。
image.png
2.常量的獲取
1)使用常量名
直接使用常量名獲取映之。
constant()
可以獲取特殊的常量拦焚。
3.常量在內存中的表示形式
常量區(qū)不可以修改。
不可以重新定義或者修改值杠输。
4.預定義常量
1)get_defined_constants()
2)魔術常量
它的值會隨著在代碼中的位置的改變而改變赎败。
①_ DIR _
當前腳本所在的目錄
②_ LINE _
獲取當前行號。
③_ FILE _
獲取當前腳本的路徑+文件名蠢甲。
四僵刮、HP 數(shù)據(jù)類型
1.標量數(shù)據(jù)類型
一般指單個數(shù)值。
整形鹦牛,浮點型搞糕,字符串類型,布爾類型曼追。
2.復合數(shù)據(jù)類型
包括數(shù)組和對象窍仰。
一般包含多個數(shù)值,數(shù)組中會有多個元素礼殊,對象里面會有多個成員屬性和成員方法驹吮。
3.特殊類型
1)null :
變量未賦值
變量被刪除
變量被賦值為null
2)resource
資源類型
4.整型類型
integer
1)整型的表現(xiàn)形式
- 半斤八兩, 一斤16兩 晶伦,十六進制碟狞。滿16進1
- 一小時60分鐘,一分鐘60秒婚陪, 六十進制族沃。滿60進1
- 計算機底層 二進制,滿2進1
- 十進制 最常用(0-9)
- 二進制(0 1) 八進制(0-7) 十六進制(0-9-A-F)
- 八進制 017 一般以0開頭
- 十六進制0x1a 一般以0x開頭
-
PHP_INT_MAX 整形最大值
image.png
PHP_INT_SIZE:表示整形占據(jù)的字節(jié)數(shù)近忙。4個字節(jié)竭业。
image.png
2)其他進制轉換為十進制
按權展開
123 = 3100 +2101 + 1102
017(八進制) = 780 +181 = 15
0xa8(十六進制) = 8160 + 10*161 =168
3)二進制、八進制及舍、16進制之間的轉換
一個8進制可以轉換成三個二進制位
一個16進制可以轉換成四個二進制位
017(八進制) = 001,111(二進制)
010未辆,001,000(二進制) = 210 (八進制)
4)十進制轉換為其他進制
轉換原則:
整數(shù)部分: 除基倒取余 基是指幾進制的幾 10(十進制)->1010(二進制)
小數(shù)部分:乘基 正取整锯玛。
乘x取整咐柜,直到小數(shù)部分為0,整數(shù)部分自上而下組織 0.25 ->0.01
5)進制轉換函數(shù)
decbin(int): 十進制轉二進制
decoct(int): 十進制轉八進制
dechex(int): 十進制轉十六進制
bindec(string): 二進制轉十進制
octdec(string): 八進制轉十進制
hexdec(string): 十六進制轉十進制
5.浮點型類型
價格:99.9 重量:127.3斤
1)浮點數(shù)的表現(xiàn)形式
常用格式:1.2 2.3 12.5
科學計數(shù)法 1.234e2 eN表示10的N次方
2)說明及注意事項
浮點數(shù)是近似的攘残,比較兩個浮點數(shù)相等是有問題的
最多是14位有效數(shù)字 有效數(shù)字指從左邊第一個不是零的數(shù)字算起拙友。
- 表示范圍-1.810^308-----1.810^308
- 其他編程語言,如C JAVA 有單精度和雙精度之分PHP 只實現(xiàn)了雙精度
- 整數(shù)范圍無法表示的數(shù)字歼郭,可以使用浮點數(shù)遗契。
- 超出整數(shù)范圍,自動使用浮點數(shù)病曾。
-
浮點數(shù)占據(jù)的空間大牍蜂。
image.png
6.布爾類型介紹
true漾根,false 表示事物的真假狀態(tài)。
true 和false 不區(qū)分大小寫 建議小寫
TRUE ,FALSE
1)邏輯判斷為假(false)的情況鲫竞。
整數(shù) 0
浮點數(shù) 0.0
字符串 ‘0’
字符串 ’’ ‘ ’有空格和小數(shù)為true
空數(shù)組
null
2)isset()
測試變量是否設置
變量未設置或者設置為NULL辐怕,返回false,其他返回true从绘。
3)empty()
判斷變量是否為空
邏輯判斷為false的變量寄疏,使用empty判斷,返回true僵井。
4)is_type 系列函數(shù)
is_int/is_integer 判斷是否是整形
is_float/is_double/is_numeric (判斷是否是數(shù)值)
is_string (判斷是否是字符串)
is_boolean/is_bool
is_array
is_null
is_resource
五陕截、類型判斷與轉換
1.gettype()
得到的結果:boolean,integer,
double (浮點型返回double,不是float)
string
array
object
null
resource
2.自動轉換
PHP 本身是弱類型語言,支持類型的自動轉換驹沿,數(shù)據(jù)在參與運算時艘策,會根據(jù)實際環(huán)境自動轉換類型蹈胡,參與運算渊季。
1)字符串轉換為數(shù)值類型
遵循原則:
- 純數(shù)字的字符串轉換位相應的數(shù)字。
- 以數(shù)字開頭的字符串罚渐,轉換成相應的數(shù)字却汉。
- 不以數(shù)字開頭的字符串,轉換位0
-
布爾值true 轉換為1荷并,false轉換為0
image.png
3.類型強制轉換
轉換原則:與類型自動轉換原則一致合砂。
類型字符串:
int
bool
float
string
array
object
(類型字符串)變量
4.自動轉換和強制轉換比較
- 轉換之后,原始數(shù)據(jù)類型不發(fā)生轉換,只是數(shù)據(jù)參與的值發(fā)生了改變。
-
自動轉換的原則和強制轉換的原則一致界牡。
image.png
5.settype()
- 將變量設置為指定的類型
- settype($var, ‘類型字符串’);
- 返回值為true,或者false
-
會改變變量的值坦弟。
image.png