PHP基礎知識點總結
1.php陣列
var_dump()函式返回陣列的資料型別和值
2.php物件
在 PHP 中,物件必須宣告。
首先,你必須使用class關鍵字宣告類物件。類是可以包含屬性和方法的結構。
然後我們在類中定義資料型別,然後在例項化的類中使用資料型別:
例子:
<?php
class Car
{
var $color;
function Car($color="green") {
$this ->color = $color;
}
function what_color() {
return $this->color;
}
}
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
3.php常量
常量被定義之後,在指令碼任何地方都不能被改變
一個常量由英文字母、下劃線、和數字組成,但數字不能作為首字母出現。 (常量名不需要加 $ 修飾符)。
設定php常量 函式語法為:define(String constant_name,mixed value,case_sensitive =true);
該函式的三個引數:constant_name:必選引數,常量名稱,即識別符號
value:必選引數,常量的值
case_sensitive:可選引數,指定是否大小寫敏感,設定為true表示不敏感
4.php字串變數
在php中,只有一個字串運算子
並置運算子(.)用於把兩個字串值連線起來
echo txt1."".txt2;(測試下,中間的雙引號可否去掉)
5.php的string函式
strpos()函式 用於在字串內查詢一個字元或一段指定的文字
strpos("Hello world!","world");
6.php的運算子
算數運算子:
x/y 除 x除以y的商
x%y 模(除法的餘數) x除以y的餘數
比較運算子:
x===y恆等於 如果x等於y,且它們型別相同,則返回true
!=和<>都是不等於的意思
!==不恆等於
邏輯運算子:
異或 x or y 如果x和y,有且僅有一個為true,則返回true
陣列運算子:
x == y 相等 如果 x 和 y 具有相同的鍵/值對,則返回 true
x === y 恆等 如果 x 和 y 具有相同的鍵/值對,且順序相同型別相同,則返回 true
7.php的陣列
陣列是一個能在單個變數中儲存多個值的特殊變數
array()函式用於建立陣列
三種類型陣列:
數值陣列 帶有數字ID的陣列
關聯陣列 帶有指定的鍵的陣列,每個鍵關聯一個值
多維陣列 包含一個或多個數組的陣列
獲取陣列的長度 count函式
遍歷關聯陣列
for()
foreach()迴圈
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
8.php陣列排序函式
sort() - 對陣列進行升序排列
rsort() - 對陣列進行降序排列
asort() - 根據關聯陣列的值,對陣列進行升序排列
ksort() - 根據關聯陣列的鍵,對陣列進行升序排列
arsort() - 根據關聯陣列的值,對陣列進行降序排列
krsort() - 根據關聯陣列的鍵,對陣列進行降序排列
9.php超級全域性變數
GLOBALGLOBAL 是PHP的一個超級全域性變數組,在一個PHP指令碼的全部作用域中都可以訪問。
$GLOBAL 是一個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵。
例項:
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
$SERVER
$_SERVER 是一個包含了諸如頭資訊(header)、路徑(path)、以及指令碼位置(script locations)等等資訊的陣列。這個陣列中的專案由 Web 伺服器建立。
$_REQUEST,$_POST,$_GET都可以獲得表單的資料
- 1
- 2
- 3
- 4
- 5
10.for迴圈
foreach(arrayasvalue)
{
要執行的程式碼
}
11.建立php函式
準則:函式的名稱應該提示出它的功能
函式名稱以字母或下劃線開頭(不能以數字開頭)
例項:function functionName()
{
要執行的程式碼
}
新增引數,如加兩個引數 function writeName(fname,punctuation)
返回值:需讓函式返回一個值,請使用 return 語句
12.魔術變數
LINE檔案中的當前行號
FILE檔案的完整路徑和檔名
DIR檔案所在的目錄。如果用在被包括檔案中,則返回被包括的檔案所在的目錄。
它等價於 dirname(FILE)。除非是根目錄,否則目錄中名不包括末尾的斜槓。
(PHP 5.3.0中新增)
FUNCTION 函式名稱
CLASS 類的名稱
TRAIT /???????????????????????此處不懂,還需要研究一下
METHOD 類的方法名 返回該方法被定義時的名字(區分大小寫)
NAMESPACE 當前名稱空間的名稱(區分大小寫)
13.名稱空間(namespace)
//此處回頭再看,看著有點煩??????????????
14.表單
表單:先在form表單的 action裡面填上xxx.php,method是“post”,然後進入xxx.php檔案中使用$_POST[“”]方法獲得相應的值
當method是“get”的時候所有變數名和值都會顯示在url中,注:在傳送密碼或敏感資訊的時候,不應該使用此方法。然而,正因為變數顯示在 URL 中,
因此可以在收藏夾中收藏該頁面。在某些情況下,這是很有用的。
註釋:HTTP GET 方法不適合大型的變數值。它的值是不能超過 2000 個字元的。
預定義的 $_REQUEST 變數包含了 $_GET、$_POST 和 $_COOKIE 的內容。
$_REQUEST 變數可用來收集通過 GET 和 POST 方法傳送的表單資料。
表單驗證:
$_SERVER["PHP_SELF"] 會發送表單資料到當前頁面,而不是跳轉到不同的頁面。
htmlspecialchars() 函式把一些預定義的字元轉換為 HTML 實體。
預定義的字元是:
& (和號) 成為 &
" (雙引號) 成為 "
' (單引號) 成為 '
< (小於) 成為 <
> (大於) 成為 >
$_SERVER["PHP_SELF"] 可以通過 htmlspecialchars() 函式來避免被利用
示例:<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
使用 PHP 驗證表單資料
首先我們對使用者所有提交的資料都通過 PHP 的 htmlspecialchars() 函式處理。
當我們使用 htmlspecialchars() 函式時,在使用者嘗試提交以下文字域:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
<script>location.href('http://www.w3cschool.cc')</script>
- 1
- 該程式碼將不會被執行,因為它會被儲存為HTML轉義程式碼,如下所示:
- 1
- 2
<script>location.href('http://www.w3cschool.cc')</script>
- 1
以上程式碼是安全的,可以正常在頁面顯示或者插入郵件中。
當用戶提交表單時,我們將做以下兩件事情,:
使用 PHP trim() 函式去除使用者輸入資料中不必要的字元 (如:空格,tab,換行)。
使用PHP stripslashes()函式去除使用者輸入資料中的反斜槓 (\)
表單示例:`http://qctlr.cai.swufe.edu.cn/w3c/php/php-form-complete.html`
- 1
- 2
- 3
- 4
- 5
- 6
15.PHP資料庫
mysql連線語法:在php中使用mysqli_connected函式完成
語法:mysqli_connect(host,username,password,dbname);
host:可選,規定要連線的伺服器.可以是要連線的伺服器,可以是主機名或者IP地址
password: 規定登陸的密碼
dbname: 規定執行查詢的使用的預設資料庫
連線的示例程式碼:
- 1
- 2
<?php
// Create connection
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
關閉的程式碼:mysqli_close($con);
php建立資料庫和表
建立資料庫:關鍵程式碼如下:
$sql="CREATE DATABASE my_db";//sql語句
mysqli($con,$sql);//執行語句
建立表:
$sql="CREATE TABLE Person(FirstName CHAR(30),LastName CHAR(30),Age INT)";
mysqli($con,$sql);//執行語句
注:主鍵和自動遞增欄位:PID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(PID),
(AUTO_INCREMENT,PRIMARY KEY這是遞增和主鍵的關鍵字)
php MySql Insert Into
和之前的建立的方法差不多,就是sql語句的方法不同
sql的兩種寫法:1.INSERT INTO TABLE_NAME VALUES(value1,value2,value3);
2.INSERT INTO TABLE_NAME(column1,column2,column3,...)VALUES (value1,value2,value3,..);
php Mysql Select
sql語句:SELECT column_name(s) FROM table_name
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
$result=mysqli_query($conn,$sql);//result陣列中儲存了查詢得到的資料
while($row=mysqli_fetch_array($result)){
echo $row['FirstName']." " .$row['LastName'];
echo "<br>"
}
- 1
- 2
- 3
- 4
- 5
//以下這幾個操作,都是需要執行mysqli_query(,)這個操作。
php Mysql Where
SELECT column_name(s) FROM table_name WHERE column_name operator value
php Mysql Order By
`SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|Desc`
可以根據多個列進行排序。當按照多個列進行排序時,只有第一列的值相同時才使用第二列:
SELECT column_name(s)
FROM table_name
ORDER BY column1, column2
php Mysql Update
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
UPDATE table_name SET column1=value,column2=value2,...
WHERE some_column=some_value
- 1
- 2
php Mysql Delete
DELETE FROM table_name WHERE some_column=some_value
- 1
- 2
- 3
16.php XML
XML 用於描述資料,其焦點是資料是什麼。XML 檔案描述了資料的結構。
在 XML 中,沒有預定義的標籤。您必須定義自己的標籤。
有兩種基本的 XML 解析器型別:
基於樹的解析器:這種解析器把 XML 文件轉換為樹型結構。它分析整篇文件,並提供了對樹中元素的訪問,例如文件物件模型 (DOM)。
基於時間的解析器:將 XML 文件視為一系列的事件。當某個具體的事件發生時,解析器會呼叫函式來處理。
PHP XML DOM
DOM是什麼?
w3c DOM提供了針對HTML和XML文件的標準物件集,以及用於訪問和操作這些文件的標準介面
W3C DOM 被分為不同的部分(Core, XML 和 HTML)和不同的級別(DOM Level 1/2/3):
* Core DOM - 為任何結構化文件定義標準的物件集
* XML DOM - 為 XML 文件定義標準的物件集
* HTML DOM - 為 HTML 文件定義標準的物件集
XML解析
XML文件片段
<?xml version="1.0" encoding="ISO-8859-1"?>
<from>Jani</from>
XML DOM 把上面的 XML 視為一個樹形結構:
Level 1: XML 文件
Level 2: 根元素: <from>
Level 3: 文字元素: "Jani"
示例xml檔案:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
載入和輸出xml,並把它輸出
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>
- 1
- 2
- 3
- 4
- 5
- 6
輸出結果:ToveJaniReminder Don't forget me this weekend!
遍歷XML(我們要初始化xml解析器,載入xml,並遍歷<note>元素的的所有元素)
- 1
- 2
- 3
- 4
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("load.xml");
$x=$xmlDoc->documentElement;
foreach($x->childNodes As $item)
{
print $item->nodeName ." = " .$item->nodeValue . "<br>";
}
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
輸出結果: #text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don't forget me this weekend!
#text =
在上面的例項中,您看到了每個元素之間存在空的文字節點。
當 XML 生成時,它通常會在節點之間包含空白。XML DOM 解析器把它們當作普通的元素,如果您不注意它們,有時會產生問題。
php SimpleXML
提供了一種獲取xml元素的名稱和文字的簡單方式
SimpleXML 可把 XML 文件(或 XML 字串)轉換為物件,比如:
元素被轉換為 SimpleXMLElement 物件的單一屬性。當同一級別上存在多個元素時,它們會被置於陣列中。
屬性通過使用關聯陣列進行訪問,其中的索引對應屬性名稱。
元素內部的文字被轉換為字串。如果一個元素擁有多個文字節點,則按照它們被找到的順序進行排列。
示例xml檔案 “note.xml”
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
(1)、輸出$xml變數的鍵和元素
<?php
$xml=simplexml_load_file("note.xml");
print_r($xml);
?>
結果:SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend!
(2)、輸出xml檔案中每個元素的資料:
<?php
$xml=simplexml_load_file("note.xml");
echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>
結果:
Tove
Jani
Reminder
Don't forget me this weekend!
(3)、輸出每個子節點的元素名稱和資料
<?php
$xml=simplexml_load_file("note.xml");
echo $xml->getName() . "<br>";
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br>";
}
?>
結果:
note
to: Tove
from: Jani
heading: Reminder
body: Don't forget me this weekend!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
17.php高階教程
17.1 php多維陣列
一個數組中的值可以是另一個數組,另一個數組的值也可以是一個數組,依次,我們可以建立二維或者三維陣列:
$families=array
(
"Griffin"=>array
(
"Peter",
"Lous",
"Megan"
),
"Quagmire"=>array
(
"Glenn"
),
"Brown"=>array
(
"Cleveland",
"Loretta",
"Junior"
)
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
結果如下:Array
(
[Griffin] => Array
(
[0] => Peter
[1] => Lois
[2] => Megan
)
[Quagmire] => Array
(
[0] => Glenn
)
[Brown] => Array
(
[0] => Cleveland
[1] => Loretta
[2] => Junior
)
)
17.2 php Date()格式化日期
php date()函式用於格式化時間/日期
語法:date(format,timestamp)
format:必需,規定時間戳的格式
格式化日期:format下面有很多可選字元:
d:代表月中的天
m:代表月
Y:代表年(四位數)
如date(Y/m/d)或date(Y.m.d)等等
timestamp:必需.規定時間戳,預設是當前的日期和時間
新增時間戳:mktime()函式可為指定的日期返回Unix時間戳
Unix 時間戳包含了 Unix 紀元(1970-01-01 00:00:00 GMT)和指定時間之間的秒數。
mktime()語法
mktime(hour,minute,second,month,day,year,is_dst)
示例:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
<?php
$tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "Tomorrow is ".date("Y/m/d", $tomorrow);
?>
- 1
- 2
- 3
- 4
上面程式碼的輸出如下所示:
Tomorrow is 2009/05/12
17.3 php包含檔案
php include和require語句
在php中,你可以在伺服器執行php檔案之前,在該檔案中插入一個檔案的內容
include和require語句用於在執行流中插入寫在其它檔案中的有用的程式碼
include和require除了處理錯誤的方式不同之外,在其他方面都是相同的
include:生成一個警告,在錯誤發生之後,指令碼會繼續執行
require:生成一個致命錯誤,在錯誤發生後腳本會停止執行
語法:include 'filename';
require 'filename';
示例:<?php include 'header.php'; ?>
17.4 php檔案處理
fopen()函式用於開啟檔案
此函式的第一個引數含有要開啟的檔案的名稱,第二個引數規定了使用哪種模式來開啟檔案:
$file=fopen("welcome.txt","r");
第二個引數的各種模式:
r 只讀。在檔案的開頭開始。
r+ 讀/寫。在檔案的開頭開始。
w 只寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。
w+ 讀/寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。
a 追加。開啟並向檔案末尾進行寫操作,如果檔案不存在,則建立新檔案。
a+ 讀/追加。通過向檔案末尾寫內容,來保持檔案內容。
x 只寫。建立新檔案。如果檔案已存在,則返回 FALSE 和一個錯誤。
x+ 讀/寫。建立新檔案。如果檔案已存在,則返回 FALSE 和一個錯誤。
以下的這段語句寫的是,假如fopen打不開該檔案,則會生成一段訊息
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
關閉檔案:fclose($file)
檢測檔案末尾(EOF)
在迴圈遍歷未知長度的資料時,feof()函式很有用。
if(feof($file)) echo "檔案結尾";
逐行讀取檔案
fgets()函式用於從檔案中逐行讀取檔案。
注:在呼叫該函式之後,檔案指標會移動到下一行。
while(!feof($file))
{
echo fgets($file). "<br>";
}
逐字元讀取檔案
fgetc()函式用於從檔案中逐字元的讀取檔案
注:在呼叫該函式之後,檔案指標會移動到下一個字元
操作和fgets方法差不多
17.5 php檔案上傳()????????????????此處需要自己進行一下操作。實戰演練,不如肯定不知道咋回事
http://www.runoob.com/php/php-file-upload.html
17.6 php Cookies
常用於識別使用者,cookie是一種伺服器留在使用者計算機上的小檔案,每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發送cookie.通過
php,您能夠建立並取回cookie的值
建立Cookie :setcookie(函式) 該函式必需位於<html>標籤之前。
setcookie(name, value, expire, path, domain);
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
註釋:在傳送 cookie 時,cookie 的值會自動進行 URL 編碼,在取回時進行自動解碼。(為防止 URL 編碼,請使用 setrawcookie() 取而代之。)
取回cookie的值
php的$_COOKIE變數用於取回cookie的值 如:$_COOKIE["user"]
用isset()函式來確認是否已設定了cookie
刪除Cookie,
<?php
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>
17.7 Php Sessions
PHP session 變數用於儲存關於使用者會話(session)的資訊,或者更改使用者會話(session)的設定。
Session 變數儲存單一使用者的資訊,並且對於應用程式中的所有頁面都是可用的。
17.8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
18 php Json
json函式
1.json_encode 對變數進行 JSON 編碼
2.json_decode 對 JSON 格式的字串進行解碼,轉換為 PHP 變數
3.json_last_error 返回最後發生的錯誤
String json_encode(value[,option=0])
value:要編碼的值,該函式只對utf-8編碼資料有效
options:由以下常量組成的二進位制掩碼:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT
示例:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
- 1
- 2
- 3
- 4
- 5
結果:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
19 AJAX簡介:無需載入整個網頁的情況下,能夠更新部分網頁的技術
獲取更多資料,進入QQ群:543592003