php腳本的后面名為.php,代碼放置在下面的括號里面:
<?php.......?>
echo可以打印信息,類似于printf。
<?phpecho "hallo world";?>
每條語句后面用分號結尾;。
php支持三種注釋方式:
<?php// 第一種# 第二種/*這是多行注釋*/?>
在php中,函數、類、和關鍵詞的大小寫都是同一個東西:
<!DOCTYPE html><html><body><?phpECHO "Hello World!<br>";echo "Hello World!<br>";EcHo "Hello World!<br>";?></body></html>
不過所有變量都對大小寫敏感,需要區分大小寫。
<?php$color="red";$Color="black";echo "my car is " . $color . "<br>";echo "my car is " . $Color . "<br>";?>
上面的例子同時指出了變量定義以及字符串拼接的語法。
變量命名規則:
PHP 變量規則:
- 變量以 $ 符號開頭,其后是變量的名稱
- 變量名稱必須以字母或下劃線開頭
- 變量名稱不能以數字開頭
- 變量名稱只能包含字母數字字符和下劃線(A-z、0-9 以及 _)
- 變量名稱對大小寫敏感($y 與 $Y 是兩個不同的變量)
- 變量會在第一次賦值時被創建。無需聲明變量的類型。
變量會有三種不同的作用域:
PHP 有三種不同的變量作用域:
- local(局部)
- global(全局)
- static(靜態)
函數之外聲明的變量擁有 Global 作用域,只能在函數以外進行訪問。
函數內部聲明的變量擁有 LOCAL 作用域,只能在函數內部進行訪問。
下面的例子測試了帶有局部和全局作用域的變量:
<?php$x=5; // 全局作用域function myTest() { $y=10; // 局部作用域 echo "<p>測試函數內部的變量:</p>"; echo "變量 x 是:$x"; echo "<br>"; echo "變量 y 是:$y";} myTest();echo "<p>測試函數之外的變量:</p>";echo "變量 x 是:$x";echo "<br>";echo "變量 y 是:$y";?>
運行結果:
測試函數內部的變量:
變量 x 是:
變量 y 是:10
測試函數之外的變量:
變量 x 是:5
變量 y 是:
比較奇怪的就是為什么全局變量不能在局部函數內訪問。
其實可以訪問,不過需要global關鍵字的幫助:
global 關鍵詞用于訪問函數內的全局變量。
要做到這一點,請在(函數內部)變量前面使用 global 關鍵詞:
<?php$x=5;$y=10;function myTest() { global $x,$y; $y=$x+$y;}myTest();echo $y; // 輸出 15?>
PHP 同時在名為 $GLOBALS[index] 的數組中存儲了所有的全局變量。下標存有變量名。這個數組在函數內也可以訪問,并能夠用于直接更新全局變量。
<?php$x=5;$y=10;function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];} myTest();echo $y; // 輸出 15?>
通常,當函數完成執行后,會刪除所有變量。不過,有時我需要不刪除某個局部變量。實現這一點需要static:
<?phpfunction myTest() { static $x=0; echo $x; $x++;}myTest();myTest();myTest();?>
php中echo和print都能使用,兩者的唯一區別是print返回1,echo沒有返回值。
strlen函數可以返回字符串的長度。
strpos函數用來確定另外一個字符串的位置:
<?phpecho strpos("Hello world!","world");?>
使用define函數來定義常量:
<?phpdefine("GREETING", "Welcome to W3School.com.cn!");echo GREETING;?>
define函數還有第三個參數,用來指定是否大小寫敏感。
php的if-else語句和其他語言大同小異,舉個例子:
<?php$t=date("H");if ($t<"10") { echo "Have a good morning!";} elseif ($t<"20") { echo "Have a good day!";} else { echo "Have a good night!";}?>
switch-case語句:
<?phpswitch ($x){case 1: echo "Number 1"; break;case 2: echo "Number 2"; break;case 3: echo "Number 3"; break;default: echo "No number between 1 and 3";}?>
while、for語句和其他語言無差別,看看foreach吧:
<?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>";}?>
php的真正力量來自于它的函數,它有1000個內置函數。
用戶定義的函數聲明以關單 "function" 開頭:
function functionName() {
被執行的代碼;
}
舉個例子:
<?phpfunction writeMsg() { echo "Hello world!";}writeMsg(); // 調用函數?>// 含參數<?phpfunction familyName($fname,$year) { echo "$fname Zhang. Born in $year <br>";}familyName("Li","1975");familyName("Hong","1978");familyName("Tao","1983");?>// 默認參數<?phpfunction setHeight($minheight=50) { echo "The height is : $minheight <br>";}setHeight(350);setHeight(); // 將使用默認值 50setHeight(135);setHeight(80);?>// 返回值<?phpfunction sum($x,$y) { $z=$x+$y; return $z;}echo "5 + 10 = " . sum(5,10) . "<br>";echo "7 + 13 = " . sum(7,13) . "<br>";echo "2 + 4 = " . sum(2,4);?>
在 PHP 中,有三種數組類型:
- 索引數組 - 帶有數字索引的數組
- 關聯數組 - 帶有指定鍵的數組
- 多維數組 - 包含一個或多個數組的數組
索引數組:
$cars=array("Volvo","BMW","SAAB");<?php$cars=array("Volvo","BMW","SAAB");echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";?>// count<?php$cars=array("Volvo","BMW","SAAB");echo count($cars);?>// 變量索引數組<?php$cars=array("Volvo","BMW","SAAB");$arrlength=count($cars);for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>";}?>
關聯數組:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或
$age['Peter']="35";$age['Ben']="37";$age['Joe']="43";<?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");echo "Peter is " . $age['Peter'] . " years old.";?>// 遍歷<?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>";}?>
數組排序方法有下面這些:
- sort() - 以升序對數組排序
- rsort() - 以降序對數組排序
- asort() - 根據值,以升序對關聯數組進行排序
- ksort() - 根據鍵,以升序對關聯數組進行排序
- arsort() - 根據值,以降序對關聯數組進行排序
- krsort() - 根據鍵,以降序對關聯數組進行排序
比較難理解的是鍵值對排序。
<?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");asort($age);?><?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");ksort($age);?>
超全局變量,也就是預定義的全局變量,在哪里都能用,有特殊含義:
- $GLOBALS:引用全局作用域中可用的全部變量
- $_SERVER:保存關于報頭、路徑和腳本位置的信息。
- $_REQUEST:用于收集 HTML 表單提交的數據。
- $_POST:用于收集提交 method="post" 的 HTML 表單后的表單數據。也常用于傳遞變量。
- $_GET:$_GET 也可用于收集提交 HTML 表單 (method="get") 之后的表單數據。
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
其他內容可以在表單處理中找到。