PHP學習筆記(一)
知識來源:PHP與MySQL程式設計(第四版)圖靈教育系列圖書
3.1.1 預設語法
預設的界定語法以<?php 開頭,以 ?> 結束,如下:
<?php
echo "hello word ! " ;
?>
3.2 程式碼註釋
<?php
# xxxxxxx
// xxxxxxxx 兩種都可以
?>
3.3 向瀏覽器輸出資料
<?
print("hello word !!");
//或者
echo "hello word !!";
?>
3.4 PHP支援的資料型別
3.5 識別符號
識別符號是變數,函式和其他各種使用者定義物件的通用名稱。必須由字母或下劃線開頭。
3.6 變數
3.6.1 變數宣告
變數總是以美元$符號開頭,變數名遵循識別符號的命名規則。
注意!! 變數名區分大小寫!!!
3.6.2 變數作用域
*區域性變數
*函式引數
*全域性變數
*靜態變數
1.區域性變數 : 函式中宣告的變數叫做區域性變數
2.函式引數 : 當退出函式的時候,也就是函式結束後,引數值就會被撤銷
3. 全域性變數 : 與區域性變數相反,全域性變數可以在程式的任何地方訪問,宣告全域性變數,只需要在變數前面加上 global 即可
4.靜態變數 : 直接在變數前面加上 static 即可,與函式引數的變數不同,靜態變數在函式退出時不會丟失值
3.6.3 PHP的超級全域性變數 (重要!!!!)
PHP提供了許多很有用的預定義變數,可以在執行指令碼的任何位置訪問,用於提供大量與環境相關的資訊。
PHP中預定義了幾個超級全域性變數(superglobals) ,這意味著它們在一個指令碼的全部作用域中都可用。 你不需要特別說明,就可以在函式及類中使用。
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
PHP $GLOBALS
$GLOBALS 是PHP的一個超級全域性變數組,在一個PHP指令碼的全部作用域中都可以訪問。
$GLOBALS 是一個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵。
以下例項介紹瞭如何使用超級全域性變數 $GLOBALS:
例項
<?php
$x=75;
$y=25;
functionaddition()
{
$GLOBALS['z']=$GLOBALS['x']+$GLOBALS['y'];
}
addition();
echo$z;
?>
以上例項中 z 是一個$GLOBALS陣列中的超級全域性變數,該變數同樣可以在函式外訪問。
PHP $_SERVER
$_SERVER 是一個包含了諸如頭資訊(header)、路徑(path)、以及指令碼位置(script locations)等等資訊的陣列。這個陣列中的專案由 Web 伺服器建立。不能保證每個伺服器都提供全部專案;伺服器可能會忽略一些,或者提供一些沒有在這裡列舉出來的專案。
以下例項中展示瞭如何使用$_SERVER中的元素:
例項
<?php
echo$_SERVER['PHP_SELF'];
echo"<br>";
echo$_SERVER['SERVER_NAME'];
echo"<br>";
echo$_SERVER['HTTP_HOST']; //客戶的ip
echo"<br>";
echo$_SERVER['HTTP_REFERER']; //導引使用者到達當前位置的url
echo"<br>";
echo$_SERVER['HTTP_USER_AGENT'];
echo"<br>";
echo$_SERVER['SCRIPT_NAME'];
?>
需要注意的幾點:
$_GET 超級全域性變數包含使用 GET 方法傳遞的引數的有關資訊。需要注意的是,預設情況下,要訪問通過 GET 方法傳遞的變數,$_GET是接受的唯一途徑,不能用其他的變數來接受!!!
與 $_GET 一樣,在預設情況下, $_POST 是接受post變數的唯一途徑!!
例項
<html>
<body>
<formmethod="post"action="<?phpecho$_SERVER['PHP_SELF'];?>">
Name:<inputtype="text"name="fname">
<inputtype="submit">
</form>
<?php
$name=$_POST['fname'];
echo$name;
?>
</body>
</html>
4. 獲取儲存在cookie 中的資訊
$_COOKIE 全域性變數儲存了通過http cookie 傳遞到指令碼的資訊。這些cookie一般是由以前執行的PHP指令碼通過PHP函式 setcookie() 設定的。例如,假設使用 setcookie () 儲存了一個名為 example ,值為 123456 的cookie ,以後就可以通過呼叫 $_COOKIE["example"] 來獲得這個值。
5.用POST方法獲取關於上傳檔案的資訊
$_FILES 超級全域性變數包含通過POST方法向伺服器上傳的資料的有關資訊。
$GLOBALS超級全域性變數陣列可以看作是超級變數的集合,包含全域性作用域內的所有變數。
$_SESSION 超級全域性變數包含與所有會話變數有關的資訊 。
3.10.3 檔案包含知識點
include() 包含一個檔案與複製該檔案的資料到該語句所在的位置具有相同的結果。
與 print 和echo 類似 , include 在使用的時候可以不加括號,include " \ect\password ” ;
include_once () 函式的作用和include 相同,確保只包含檔案一次
require () 基本上和include 一樣,區別就是無論require() 的位置如何,指定檔案都將包含到出現require()的指令碼中。例如,即使require() 放在if條件為假的情況下,它依然會包含進來。include就相反,只有if條件為真才會真正包含!!
還有一個區別就是:require() 出錯時,指令碼會停止執行,而在使用include的情況下,指令碼將繼續執行。
require_once () 同理,也是確保只包含檔案一次
5.2 建立陣列
可以直接建立:
$state[0]="aaa";
$state[1]="bbb";
$state[2]="ccc";
$state[3]="ddd";
也可以使用array()函式來建立陣列
$state = arrray(
"china" => "beijing" ,
"us" => "nuvyue" ,
);
5.2.4 測試陣列
is_array() 函式可以用來測試變數是不是陣列,如果是就返回TRUE,否則返回FALSE
5.3 輸出陣列
實際上用print_r 和foreach() 函式比較多
1、print_r()
利用 print_r() 函式可以列印輸出整個陣列內容及結構,按照一定格式顯示鍵和元素。注意 print_r() 函式不僅是隻用於列印,實際它是用於列印關於變數的易於理解的資訊。
例子:
<?php
$arr_age
=
array
(18, 20, 25);
print_r(
$arr_age
);
?>
結果:
Array ( [0] => 18 [1] => 20 [2] => 25 )
2、var_dump()
同 print_r() 函式一樣,var_dump() 函式也可以用於列印陣列的資料及結構。不過 var_dump() 函式功能比 print_r() 更強大,可以同時列印多個變數且給出變數的型別資訊。
例子:
<?php
$arr_age
=
array
(18, 20, 25);
var_dump(
$arr_age
);
?>
結果:
|
print_r() 和 var_dump() 函式一般是用於除錯程式使用,更多情況是使用 echo 來輸出具體的陣列單元值。
5.5 定位陣列元素 (搜尋陣列內容,搜尋陣列鍵或者搜尋陣列值)
in_array () 用於搜尋陣列內一個特定的值
array_key_exists () 用於搜尋陣列內一個特定的鍵
5.2.2 獲取陣列鍵
array_keys () 函式返回一個數組,其中包含所搜尋陣列中找到的所有的鍵
array_values () 函式返回一個數組中所有的值
5.7 確定陣列的大小和唯一性
count() 函式返回陣列中值的總數
sizeof () 函式是 count () 的別名。他們的功能是一樣的
5.8.3 陣列排序
凡是 xxsort() 函式,基本上都是對陣列排序的函式
5.9 合併,拆分,接合和分解陣列