php基本語法形式
1.php的標記符
有以下形式:
形式1(推薦):
<?php 這里要寫符合php語法的語句 ?>
形式2:
<script language=”php”> 這里要寫符合php語法的語句 </script>
形式3(不推薦):
<? 這里要寫符合php語法的語句 ?>
它依賴于php.ini中的一個設置項:
將其改為On,則上述形式就可以用了
php的結束標記(比如 ?> ),在如下情況可以省略:
php的語句之后,再沒有了html代碼部分
2.php的區分大小寫特性
變量區分大小寫;
常量通常默認也區分,如:$_POST[],$_GET[],但可以人為設定為不區分(但這種做法不推薦)
其他場合的關鍵字都不區分,比如函數名,系統關鍵字(for,if,return....)
3.一條語句使用一個分號結束
在一個php的語句標記中的最后一個分號可省略
php結束標記省略則不能省略最后一個分號
4.php的注釋
單行注釋:
形式1: //注釋內容
形式2: #注釋內容多行注釋:
/* 注釋內容,可以多行 */2個多行注釋的技巧:
有時候,我們因為測試或別的原因,需要將一大段代碼多次進行“注釋”或“反注釋”;,則此時,可以使用如下2個技巧來方便實現:
技巧1:
反注釋:
技巧2:
反注釋:
變量
1.基本理解
變量可以理解為只是一個代表一定存儲空間及其中的數據的一個“標識符”——也就是一個名字。
引用關系/指代關系
橢圓: 數據空間:
$v1 = 1; 這一行代碼,圖示如下:
這表明,使用該變量,就是在使用該數據空間的數據值!
比如:
echo $v1; ///輸出的是數據1
$v2 = $v1 + 3; //此時,其實進行的是1+3的計算!
使用形式:
每個變量名前面必須以$開頭。定義形式:
php中,不支持“單純定義”一個變量,而是,在第一次一個變量賦值的時候,就算是定義變量!
2.變量的基本操作
只有4個操作:
賦值:
等號(=)的左邊放變量名,右邊放“數據”,就是賦值;
$v1 = 1;
取值:
任何需要一個數據的語句中使用一個變量,此時就是指從該變量取得該變量的值——取值;
概括來說,大約有如下情形:
echo $v1; //取出v1的值并輸出
$v2 = $v1; //取出v1的值并給其他變量賦值;
$v2 = $v1 + 3; //取出v1的值并與3進行運算!
$v2 = round( $v1 ); //取出v1的值并并使用函數round()對其進行四舍五入運算
判斷isset(變量名):
作用:判斷該變量是否存在,或該變量是否有數據值!存在或有數據值,就是true,否則就是false
刪除unset(變量名):
含義:刪除一個變量,并不是指將該變量從程序中刪掉,而是,“斷開”該變量名跟該變量原有的數據值之間的“引用關系”(聯系)!,此時,會有這樣的結果:
1,該變量名已經不指向(引用)任何數據了,則此時其isset()判斷的結果就是false
2,該數據(可能)沒有任何變量指向它了,就成為“無法使用的數據”——通常就被自動回收了
$v1 = 1; unset($v1); $s1 = isset($v1); //false
3.變量命名規則
基本規則——保證程序的正確性
- 以字母或下劃線開頭
- 后跟任意數量(含0個)的字母,數字和下劃線
行業規則——保證程序的可讀性
有3種常見的命名法:
1,駱駝命名法:首單詞小寫,其后每個單詞首字母大寫
舉例:
$name $myName $myFatherName2,帕斯卡命名法:每個單詞首字母大寫
舉例:$Name $MyName $MyFatherName3,下劃線分割法:每個單詞小寫,并且之間用下劃線分開
舉例:$name $my_name $my_father_name
4.變量的傳值方式
1,變量的傳值方式,是指“一個變量,傳給另一個變量”的內部細節形式——單對單;
2,變量的傳值方式,只有2中:值傳遞,引用傳遞;
值傳遞
$v1 = 1;
$v2 = $v1; //這就是值傳遞
簡單理解:將$v1的值取出來(注意:$v1中的值還在),然后再用該值給$v2賦值。
橢圓: 數據空間:1
引用關系/指代關系
圖示理解:
可見,值傳遞,就是變量v1的值進行了復制,然后在給另一個變量v2賦值。
注意:
- 這兩個變量此時是值相等的;
- 這兩個變量又是互相獨立的——互不影響;
即$v1 = 10; 則echo $v2 ;//輸出1
引用傳遞
php中,只有一種語法形式可以實現變量的引用傳值方式:&符號。
舉例如下:
$m1 = 1;
$m2 = & $m1; //引用傳值方式
簡單理解: 將變量$m1跟其數據值之間的“引用關系”,復制一份,再給予變量$m2,即,此時,變量$m2也同樣具有跟原來數據的一個“引用關系”(指向關系);
圖示理解:
結果是:
- 此時仍然有了2個變量,但只有一個數據值(數據空間),2個變量都共同指向該數據空間。
- 對其中任何一個變量的操作,其實都是在操作數據值(空間);
代碼對比演示:
5.可變變量
$s1 = “abc”; //這是一個變量,里面存儲的是字符串”abc”
$abc = 10; //
echo $$s1; //???,輸出10
理解:
- 在php中,一個”$”后面,總是跟著一個變量名!
- 這里,echo輸出的這個變量(以第一個$為標識)的名字是:$s1, 即”abc”
- 所以,這里輸出的是 $abc, 即 10
- 這種連續出現“$”的變量形式,就是所謂的“可變變量”;
6.預定義變量
所謂預定義變量,其實指,php這個語言工具中,預先就定義好的變量;
我們只是“拿來使用”。
綜述
- 主要有:$_GET, $_POST, $_REQUEST, $_SERVER, $GLOBALS,
- 均是數組
- 系統定義與維護——即我們不應該其給其賦值或銷毀其值,只應該去“用其值”。
- 具有超全局作用域——哪里都可以使用。
- 不同情形下可能具有不同的值
7.$_POST變量
含義:
它代表用戶通過表單以post方式( method=”post” )提交的時候所提交的所有數據——這個稱為post數據。
基本演示:
7form_post.html頁面:
<!--
以下表單的數據,點擊提交后,會將所有表單數據提交給
8post_data.php這個頁面(文件),并在該文件中去處理
其實就是指:程序進入該文件中運行。
-->
<form action="8post_data.php" method="post">
數據1:<input type="text" name="data1" />
<br />
數據2:<input type="text" name="data2" />
<br />
<input type="submit" value="提交" />
</form>
8post_data.php頁面及輸出結果為:
<?php
//先一個一個獲取數據:
if( !empty($_POST) ){
$d1 = $_POST['data1'];
$d2 = $_POST['data2'];
//然后輸出,看看:
echo "d1 = $d1, d2 = $d2";
echo "<hr />";
//再來看看整個$_POST這個數組數據!
print_r($_POST);
}
else{
echo "非法的頁面訪問";
}
?>
- isset(變量):
- 判斷變量是否存在,或變量是否為空(null);如果存在,就是true,否則就是false
- empty(變量): 判斷變量的“內容”是否為空的(不是null的空,而是沒有內容).
- 基本上,是一些硬性規定,如下數據都是“空的”: 0, “”, “0”, false, null
- array()空數組也是空
- 如果一個變量內容是空的,empty()返回的結果是true,否則是false
小案例:php頁面計算器:
html
<!--當action為空字符串的時候,是提交到本頁面!
表單中的所有數據,要想提交,都必須有name
-->
<form action="" method="post">
<input type="text" name="data1" value="<?php echo $num1; ?>" />
<select name="yunsuanfu" >
<option value="+" <?php if($fuhao=="+"){ echo 'selected="selected"';} ?> >+</option>
<option value="-" <?php if($fuhao=="-"){ echo 'selected="selected"';} ?> >-</option>
<option value="*" <?php if($fuhao=="*"){ echo 'selected="selected"';} ?> >*</option>
<option value="/" <?php if($fuhao=="/"){ echo 'selected="selected"';} ?> >/</option>
</select>
<input type="text" name="data2" value="<?php echo $num2; ?>" />
<input type="submit" value="=" />
<input type="text" name="result" value="<?php echo $jieguo; ?>" />
<br /><input type="reset" value="重置" />
</form>
php
<?php
if(!empty($_POST)){
$num1 = $_POST['data1'];
$num2 = $_POST['data2'];
$fuhao = $_POST['yunsuanfu'];
//echo "符號為:$fuhao";
if( $fuhao == '+' ){
$jieguo = $num1 + $num2;
}
else if( $fuhao == '-' ){
$jieguo = $num1 - $num2;
}
else if( $fuhao == '*' ){
$jieguo = $num1 * $num2;
}
else if( $fuhao == '/' ){
$jieguo = $num1 / $num2;
}
}
else{
//當第一次進來是(沒有post數據),
//設定這4個變量,保證后面的變量使用不會出錯
$jieguo = "";
$num1 = "";
$num2 = "";
$fuhao = "";
}
?>
8.$_GET變量
- 含義:
- 它代表用戶通過get方式( 有5種get形式 )提交的時候所提交的所有數據——這個稱為get數據。
小提示:get,post沒有翻譯!
提交get數據有5種形式:
形式1:
<form action="目標文件.php" method="get">
<input type="text" name="data1" />
<input type="text" name="data2" />
<input type="submit" value="提交" />
</form>
這種形式的get數據,跟post數據類似,數據內容由用戶填寫或選擇而得到!
形式2:
<a href=”目標文件.php?data1=5&data2=cctv&age=18”>鏈接文字</a>
說明:
- 它只是一個鏈接而已,只是在鏈接文件名的后面加上“?”,然后一個一個“串接數據”;
- 數據形式為:數據項名稱=數據值, 相互之間用“&”符號隔開
- 這種形式的數據也同樣是“點擊鏈接”就提交的get數據,但用戶只能選擇點還是不點,而不能修改數據。
形式3:
<script>
location.href = “目標文件.php?data1=5&data2=cctv&age=18”;
</script>
說明:
- 該語句可以看做是通過js技術實現的頁面跳轉功能,跟a標簽的連接功能完全一樣!
- 其中該語句,通常都是放在一個函數中,然后因為某個事件發生而去調用該函數!
形式4:
<script>
location.assign( “目標文件.php?data1=5&data2=cctv&age=18”);
</script>
說明:
- 該語句其實跟形式3完全一樣功能,只是location這個對象實現頁面跳轉的另一個語法形式而已!
形式5:php的跳轉語法
<?php
//語法形式: header(“location: 目標網頁地址”);
header(“location: 目標文件.php?data1=5&data2=cctv&age=18”);
?>
小結:
上述多種get形式提交數據,都要理解為:
跳轉到某個頁面,并“同時”攜帶(提交)一定的get數據過去!
不管哪種形式的get數據提交,接收get數據,都只有一種形式,跟post類似:
$v1 = $_GET[‘數據項名稱’]; //取得一個get數據項的值;比如$_GET[‘data1’], $_GET[“age”];
也可以“輸出”所有get數據:
print_r($_GET); 或 var_dump($_GET);
9.$_REQUEST變量
含義:
一句話,它是$_GET變量和$_POST變量數據的“合集”:即,它里面同時存儲了這兩種數據。
結果為:
如果表單為get提交方式:
結果為:
怎么能同時具有get和post數據呢?
只有一個方式:
<!--以下action中的?號后面的數據都會以get方式提交-->
<form action=”目標文件.php?data1=5&data2=cctv&age=18” method=”post”>
<!--以下表單項的數據都會以post方式提交-->
<input type=”text” name=”n1” />
<input type=”text” name=”n1” />
<input type=”submit” value=”提交” />
</form>
request數據取值時,跟get數據和post也完全一樣!
$_REQUEST[‘數據項名稱’];
當post數據和get數據的數據項名稱相同時(其實我們反對這么做),默認是post數據覆蓋了get數據。
不過這個狀況同樣可以在php.ini中設置:
默認時:
可修改為:
10.$_SERVER變量
- 含義:
- 它代表在一次瀏覽網頁的過程中的瀏覽器端的一些信息或服務器端的一些信息。
- 我們只是在程序中可以拿到這些信息,并用于編程所需!比如:取得用戶的訪問IP地址。
- 注意:
- 這種信息,隨著不同的頁面,和不同的服務器,以及不同的時刻,都可能不同!
- 要求:
- 大約有30個左右的信息,我們只要知道其中5個左右!主要有:
- $_SERVER[‘REMOTE_ADDR’]:獲取訪問者的ip地址
- $_SERVER[‘SERVER_ADDR’]:獲取服務器所在的ip地址
- $_SERVER[‘SERVER_NAME’]:獲取服務器的名字,其實就是站點設置中的servername
- $_SERVER[‘DOCUMENT_ROOT’]:獲取站點的真實物理地址,其實就是站點設置中的documentroot
- $_SERVER[‘PHP_SELF’]:獲取當前網頁地址(不含域名部分)
- $_SERVER[‘SCRIPT_FILENAME’]:獲取當前網頁地址物理路徑
- $_SERVER[‘QUERY_STRING’]獲取當前網頁地址中的所有get數據(就是?號后面部分),但只是一個整體的字符串而已。
11.$GLOBALS變量
- 含義:
- 它也是一個“重復性數據”,它里面存儲了我們自己定義的所有“全局變量”。
舉例:
$v1 = 1; //定義了一個全局變量,
//此時,就有了這樣一個數據:$GLOBALS[‘v1’],其值就是1
echo $v1 ; //輸出1
echo $GLOBALS[‘v1’]; //輸出1
這個變量,主要是用于在局部范圍不可以使用全局變量的時候,又需要該全局變量的值,此時就可以用它來取得該全局變量的值。
再定義一個新的變量:
文章列表