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;
}
}
?>
3.php常量
常量被定義之後,在腳本任何地方都不能被改變
一個常量由英文字母、下劃線、和數字組成,但數字不能作爲首字母出現。 (常量名不需要加 $ 修飾符)。
設置php常量 函數語法爲:define(String constant_name,mixed value,case_sensitive =true);
該函數的三個參數:constant_name:必選參數,常量名稱,即標識符
value:必選參數,常量的值
case_sensitive:可選參數,指定是否大小寫敏感,設定爲true表示不敏感
4.php字符串變量
在php中,只有一個字符串運算符
並置運算符(.)用於把兩個字符串值連接起來
echo
5.php的string函數
strpos()函數 用於在字符串內查找一個字符或一段指定的文本
strpos("Hello world!","world");
結果:6
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>";
}
?>
8.php數組排序函數
sort() - 對數組進行升序排列
rsort() - 對數組進行降序排列
asort() - 根據關聯數組的值,對數組進行升序排列
ksort() - 根據關聯數組的鍵,對數組進行升序排列
arsort() - 根據關聯數組的值,對數組進行降序排列
krsort() - 根據關聯數組的鍵,對數組進行降序排列
9.php超級全局變量
$GLOBAL 是一個包含了全部變量的全局組合數組。變量的名字就是數組的鍵。
實例:
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
$SERVER
$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數組。這個數組中的項目由 Web 服務器創建。
$_REQUEST,$_POST,$_GET都可以獲得表單的數據
10.for循環
foreach(
{
要執行的代碼
}
11.創建php函數
準則:函數的名稱應該提示出它的功能
函數名稱以字母或下劃線開頭(不能以數字開頭)
實例:function functionName()
{
要執行的代碼
}
添加參數,如加兩個參數 function writeName(
返回值:需讓函數返回一個值,請使用 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() 函數時,在用戶嘗試提交以下文本域:
<script>location.href('http://www.w3cschool.cc')</script>
- 該代碼將不會被執行,因爲它會被保存爲HTML轉義代碼,如下所示:
<script>location.href('http://www.w3cschool.cc')</script>
以上代碼是安全的,可以正常在頁面顯示或者插入郵件中。
當用戶提交表單時,我們將做以下兩件事情,:
使用 PHP trim() 函數去除用戶輸入數據中不必要的字符 (如:空格,tab,換行)。
使用PHP stripslashes()函數去除用戶輸入數據中的反斜槓 (\)
表單示例:`http://qctlr.cai.swufe.edu.cn/w3c/php/php-form-complete.html`
15.PHP數據庫
mysql連接語法:在php中使用mysqli_connected函數完成
語法:mysqli_connect(host,username,password,dbname);
host:可選,規定要連接的服務器.可以是要連接的服務器,可以是主機名或者IP地址
password: 規定登陸的密碼
dbname: 規定執行查詢的使用的默認數據庫
連接的示例代碼:
<?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();
}
?>
關閉的代碼: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
$result=mysqli_query($conn,$sql);//result數組中存儲了查詢得到的數據
while($row=mysqli_fetch_array($result)){
echo $row['FirstName']." " .$row['LastName'];
echo "<br>"
}
//以下這幾個操作,都是需要執行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
UPDATE table_name SET column1=value,column2=value2,...
WHERE some_column=some_value
php Mysql Delete
DELETE FROM table_name WHERE some_column=some_value
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,並把它輸出
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>
輸出結果:ToveJaniReminder Don't forget me this weekend!
遍歷XML(我們要初始化xml解析器,加載xml,並遍歷<note>元素的的所有元素)
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("load.xml");
$x=$xmlDoc->documentElement;
foreach($x->childNodes As $item)
{
print $item->nodeName ." = " .$item->nodeValue . "<br>";
}
?>
輸出結果: #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”
<?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)、輸出$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!
17.php高級教程
17.1 php多維數組
一個數組中的值可以是另一個數組,另一個數組的值也可以是一個數組,依次,我們可以創建二維或者三維數組:
$families=array
(
"Griffin"=>array
(
"Peter",
"Lous",
"Megan"
),
"Quagmire"=>array
(
"Glenn"
),
"Brown"=>array
(
"Cleveland",
"Loretta",
"Junior"
)
)
結果如下: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)
示例:
<?php
$tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "Tomorrow is ".date("Y/m/d", $tomorrow);
?>
上面代碼的輸出如下所示:
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
18 php Json
json函數
1.json_encode 對變量進行 JSON 編碼
2.json_decode 對 JSON 格式的字符串進行解碼,轉換爲 PHP 變量
3.json_last_error 返回最後發生的錯誤
String json_encode(
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));
?>
結果:
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)
}
19 AJAX簡介:無需加載整個網頁的情況下,能夠更新部分網頁的技術