如果您覺得這篇文章還不錯(cuò),可以去
H5專題中查看更多相關(guān)文章。
首先非常抱歉,最近實(shí)在太忙,所以導(dǎo)致周六周日拖更,今天白天還忙工作,一直到現(xiàn)在才剛剛把最近學(xué)習(xí)的東西整理出來。
各位讀者老爺,小的真的已經(jīng)很辛苦了,現(xiàn)在22:17分了,我還在公司坐著,所以下面如果有什么錯(cuò)誤的地方,也請各位觀眾老爺和諧討論,別噴我。
F8CE58B2-DAA4-4EA0-AC93-B6C431E66C36.png
廢話不多說了,直接上正文.
二維碼.jpg
PHP學(xué)習(xí)筆記
2016年03月21日22:20:16
今日課程預(yù)覽
屏幕快照 2016-03-21 22.18.41.png
屏幕快照 2016-03-21 22.18.49.png
屏幕快照 2016-03-21 22.18.55.png
1. 學(xué)習(xí)原因
我們?yōu)槭裁葱枰獙W(xué)習(xí) PHP ?
因?yàn)槲覀円院髮W(xué)習(xí)過程中,肯定需要自己去搭建一些比較基礎(chǔ)的小項(xiàng)目,而我們個(gè)人開發(fā)的時(shí)候沒有后臺給我們提供接口,所以我們就需要自己去編寫一下接口,同時(shí)也為了以后成為全棧工程師打一個(gè)基礎(chǔ)。
2. 環(huán)境的搭建
在1994年,PHP發(fā)布了1.0版本。
在1995年,PHP發(fā)布了2.0版本,在2.0中支持了 MySQL.
在1997年,PHP發(fā)布了3.0版本,加入了 Zeev Suraski 及 Andi Gutmans。
2000年發(fā)布的4.0版本。
有人說 PHP 是世界上最好的語言,雖然可能有些片面,但無可否認(rèn),PHP 有很多語言的優(yōu)秀的特點(diǎn)。
源碼開放
跨平臺
完全免費(fèi)
關(guān)系型數(shù)據(jù)庫
同時(shí)也是因?yàn)樵创a開放,我們可以知道在 PHP 中存在 C,Java,Perl等語言的語法,這極大的方便了我們的學(xué)習(xí)過程。
而且,我們的 PHP 也有很多很便利的配合工具。
MySQL
Apache
XAMPP
我們可以將一個(gè)成熟的服務(wù)器當(dāng)作一條生產(chǎn)線,php就像傳送帶一樣,為我們產(chǎn)出數(shù)據(jù),Mysql是數(shù)據(jù)庫也就相當(dāng)于提供原材料,但是傳送帶卻依賴電機(jī)這個(gè)動(dòng)力。Apache就相當(dāng)于一個(gè)運(yùn)行的環(huán)境。
其中 MySQL 具有體積小,速度快的優(yōu)點(diǎn),同時(shí)還是關(guān)系型數(shù)據(jù)庫。
Apache是Web服務(wù)器軟件,它可以運(yùn)行在幾乎所有的計(jì)算機(jī)平臺上面,這是最流行的Web服務(wù)器軟件之一。
XAMPP是一個(gè)功能強(qiáng)大的建 (Apache+MySQL+PHP+Perl) 軟件站集成軟件包。而且手動(dòng)安裝Apache+MySQL+PHP環(huán)境過于復(fù)雜,而XAMPP幫我們集成了這個(gè)環(huán)境,我們只需點(diǎn)擊安裝即可。
所以我們接下來的學(xué)習(xí)過程,就以 XAMPP 為基礎(chǔ)咯。
需要注意
如果我們在運(yùn)行過程中,發(fā)現(xiàn)我們的 XAMPP 中的 MySQL 啟動(dòng)不起來,我們需要自己手動(dòng)配置。
方法1:
終端運(yùn)行 : sudo /Applications/XAMPP/xamppfiles/bin/mysql.server start
方法2:
打開我們的 XAMPP 文件中的 xampp 文件。不同人放置的位置可能不同,根據(jù)個(gè)人情況設(shè)置。
sudo /Applications/XAMPP/xamppfiles/xampp,
之后在 162 行,$XAMPP_ROOT/bin/mysql.server start > /dev/null &
上面添加一句 unset DYLD_LIBRARY_PATH.這樣就可以了。
# 自動(dòng)啟動(dòng)無法完成,添加該配置后可以啟動(dòng) v.2016.03.21unset DYLD_LIBRARY_PATH#$XAMPP_ROOT/bin/mysql.server start > /dev/null &3. PHP 基礎(chǔ)語法
3.1 標(biāo)記方法
<?php echo “hello php”; ?>
<? echo “hello php”; ?> //短標(biāo)記
<script language=“php”>echo “hello php”</script>
<% echo “hello php”; %> //asp風(fēng)格
注: 1,3可以直接使用,但是2,4需要修改php.ini的配置文件才能使用
3.2 注釋的方法
單行注釋 //
多行注釋 /星號 ... 星號/
3.3 變量
3.3.1 變量的聲明
變量以$開頭,后面跟變量名
變量字母,數(shù)字,下劃線組成,不以數(shù)字開頭
變量名區(qū)分大小寫
php于javascript類似是弱類型語言,不需要實(shí)現(xiàn)生命變量的數(shù)據(jù)類型
php可以不顯式的聲明變量而直接使用(不過好的編程習(xí)慣所有的變量在使用前要進(jìn)行聲明)
$age = 28;$color = “red”;$sum = 15+”12”; //$sum = 27;3.3.2 變量的賦值
值賦值:即將賦值表達(dá)式的值復(fù)制給變量(直接賦值)
引用賦值:php4引用了引用賦值,創(chuàng)建的一個(gè)變量與另一個(gè)變量引用的內(nèi)容相同
$var_1 = “hello”;$var_2 = &$var_1; //把變量var_l的內(nèi)存地址賦值給var_2,即引用賦值3.3.3 變量的變量
$var_1 = “hello”;$$var_1 = “world”;echo $var_1; //輸出helloecho $hello; //輸出worldecho ${$var_1} //輸出world我們可以嘗試一下,發(fā)現(xiàn),我們的第三個(gè)屬性$var_1輸出的也是 world ,這證明,我們的變量也可以重新成為一個(gè)變量。
3.3.4 超全局變量
php提供了很多有用預(yù)定于的變量,用于提供大量與環(huán)境有關(guān)的信息
3.3.4.1 $_SERVER
服務(wù)器變量, 該全局變量包含著服務(wù)器和客戶端配置及當(dāng)前請求環(huán)境的有關(guān)信息
$_SERVER['SERVER_NAME']; : 當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名
$_SERVER['REMOTE_ADDR'] : 客戶端IP地址
$_SERVER['REQUEST_URI'] : URL的路徑部份
$_SERVER['HTTP_USER_AGENT'] : 操作系統(tǒng)和瀏覽器的有關(guān)信息
3.3.4.2 $_GET
該變量包含使用 GET 方法傳遞的參數(shù)的有關(guān)信息
url: http://localhost/test.php?id=100&page=2 $id = $_GET['id']; $page = $_GET[‘page'];3.3.4.3 $_POST
該變量包含使用 POST 方法傳遞的參數(shù)的有關(guān)信息;
html: <form name="reg" action="test.php" method="post"> 用戶名:<input type="text" name="username" /> 密碼: <input type="password” name="passwd"/> <input type="submit" value="提交" /> </form> php: $username = $_POST[‘username’]; $passwd = $_POST[‘passwd’];3.3.4.4 其他方法
$_REQUEST 該變量記錄著通過各種輸入方法傳遞給腳本的變量,如GET POST,但不要用這個(gè)超級全局變量,因?yàn)樗话踩宜俣缺容^慢;
$_COOKIE cookie變量數(shù)組
$_SESSION 會話變量數(shù)組
$_FILES 與上傳文件有關(guān)的變量數(shù)組
$_ENV 環(huán)境變量數(shù)組
$GLOBALS 所有全局變量數(shù)組
3.4 常量
常量是指在程序執(zhí)行中無法修改的值。如 PI (3.1415926);
在腳本執(zhí)行期間該值不能改變;
常量對大小寫敏感,通常常量名總是大寫;
常量是全局的,可以在腳本的任何地方引用;
常量分為內(nèi)置常量和自定義常量;
常量使用define()函數(shù)定義;
define('PI', 3.1415926);echo PI; //3.14159263.4.1 內(nèi)置常量
PHP_OS php所在操作系統(tǒng)的名稱
PHP_VERSION 當(dāng)前php的版本號
3.4.2 魔術(shù)常量
__LINE__ 文件中的當(dāng)前行號;
__FILE__ 文件的完整路徑和文件名;
__FUNCTION__ 函數(shù)名稱;
__CLASS__ 類的名稱;
__METHOD__ 類的方法名;
3.5 數(shù)據(jù)類型
3.5.1 標(biāo)量數(shù)據(jù)類型
3.5.1.1 字符串
字符串有三種定義方式:單引號,雙引號,定界符(heredoc);
單引號字符串中出現(xiàn)的變量不會被變量的值替代;
雙引號字符串中最重要的一點(diǎn)是其中的變量會被變量值替代;
如果遇到美元符號($),解析器會盡可能多地取得后面的字符以組成一個(gè)合法的變量名,如果想明確的指定名字的結(jié)束,用花括號把變量名括起來。
$beer = "Heineken"; echo "He drank some {$beer}s";3.5.1.2 定界符
字符串定界的方法使用定界符語法 "<<<"
$str = <<<EOD Example of string using heredoc syntax.EOD; echo $str;在PHP定界符中的任何特殊字符都不需要轉(zhuǎn)義
PHP定界符中的PHP變量會被正常的用其值來替換
使用定界符要注意:
結(jié)束標(biāo)識符所在的行不能包含任何其它字符,這意味著該標(biāo)識符不能被縮進(jìn),在分號之前
之后都不能有任何空格或制表符;
3.5.1.3 其他轉(zhuǎn)義符
-字符串轉(zhuǎn)義
\n換行
\r回車
\t水平制表符(tab鍵)
\(反斜杠)
\$$(美元符)
\”“(雙引號)
3.5.1.2 整型(integer)
$age = 25;3.5.1.3 浮點(diǎn)型(float, double)
$num = 5.39;3.5.1.4 布爾型(bool)
$bo = TRUE; $bo = FALSE;3.5.2 符合數(shù)據(jù)類型
數(shù)組
$week = array(‘星期一','星期二','星期三');
對象
$db = new db;3.5.3 特殊數(shù)據(jù)類型
資源
$fh = fopen("test.txt","r");
null
null 無,表示沒有值,null不表示空格,也不表示0;
以下情況,則認(rèn)為是null:
沒有設(shè)置為任何預(yù)定義的變量;
明確的賦值為null;
使用函數(shù)unset()清除;
3.6 自動(dòng)類型轉(zhuǎn)換
因?yàn)閜hp對于類型定義非常的松散,所以有時(shí)會根據(jù)引用變量的環(huán)境,將變量自動(dòng)轉(zhuǎn)換為最適合的類型;
例1: $num = 5; $str = “15”; echo $num + $str; 例2: $str = “100 hello”; $num = 200; echo $num + $str;例3: $str = '1.2'; if($str){ //if 判斷為 true echo 'hello world'; }3.7 類型相關(guān)函數(shù)
1.gettype() 返回變量的類型,共有8個(gè)可能的值 string、integer、float、boolean、array、object、null、unknow
$str = ‘hello’; echo gettype($str);2.is_type() 查看變量是否屬于某個(gè)類型,是返回 TRUE ,否返回 FALSE;
$arr = array(1); echo is_array($arr); $num = 5; echo is_int($num);3.var_dump() 獲取變量的值和類型的詳細(xì)信息
$str = ‘hello’; var_dump($str); $arr = array(‘A’, ‘B’, ‘C’); var_dump($arr);4. 運(yùn)算符
4.1 算數(shù)運(yùn)算符
---
+加法運(yùn)算符$a+$b;
-加法運(yùn)算符$a-$b;
*乘法運(yùn)算符$a*$b;
/除法運(yùn)算符$a/$b;
%取模運(yùn)算符(求余數(shù))$a%$b;
4.2 賦值運(yùn)算符
賦值運(yùn)算符,將一個(gè)數(shù)據(jù)值賦給一個(gè)變量;
組合賦值運(yùn)算符,在賦值之前會完成某個(gè)運(yùn)算;
---
$a = 5賦值
$a += 5加法賦值$a = $a + 5
$a -= 5減法賦值$a = $a – 5
$a *= 5乘法賦值$a = $a * 5
$a /= 5除法賦值$a = $a / 5
$a .= 5拼接賦值$a = $a.5
4.3 字符串運(yùn)算
字符串運(yùn)算符用于拼接字符串, 拼接表示將兩個(gè)或多個(gè)對象組合起來;
$a = "hello"; $b = $a . “world"; //.表示拼接前后兩個(gè)字符串 echo $b; $b = "Hello"; $b .= “World!"; //.= 表示 $b = $b.”World”; echo $b;4.4 自增自減
遞增和遞減運(yùn)算符將變量的當(dāng)前值加1或減1,可以使代碼更簡潔;
---
++$i先加$i的值加1,然后再返回$i的值;
$i++后加先返回$i的值,然后再將$i的值加1;
--$i先減$i的值減1,然后再返回$i的值;
$i--后減先返回$i的值,然后再將$i的值減1;
4.5 邏輯運(yùn)算符
利用邏輯運(yùn)算符可以根據(jù)多個(gè)變量的值進(jìn)行判斷,這使得控制程序的流程成為可能,邏輯
操作符常用于控制結(jié)構(gòu)中,如if條件和while及for循環(huán);
---
&&AND邏輯與
豎線OR邏輯或
!NOT邏輯非
4.6 比較運(yùn)算符
比較運(yùn)算符,返回一個(gè)布爾值 TRUE 或 FALSE;
--
>大于
<小于
>=大于或等于
<=小于或等于
!=不等于
<>不等于
==等于
===全等于 (兩個(gè)比較的內(nèi)容里,類型也要一樣)
!==全不等
4.7 三元運(yùn)算符
語法:1 ? 2 : 3
$a = 5; $b = 2; $res = $a > $b "yes":"no"; echo $res;4.8 運(yùn)算符的優(yōu)先級
所謂運(yùn)算符的優(yōu)先級指的是哪一個(gè)運(yùn)算符應(yīng)該先計(jì)算。
具體運(yùn)算符的優(yōu)先級,參考php手冊;
賦值運(yùn)算,從右到左
echo 1 + 2 * 3; //outputs 75. 流程控制
5.1 判斷語句
5.1.1 If 語句
if( ){ //statement}else if(){ //statement}else{ //statement}If語句用括號中的表達(dá)式返回值(true 或 false )來控制是否執(zhí)行指定的代碼程序;
表達(dá)式為數(shù)字0、空、未定義的字符串,內(nèi)置常量false都會返回false;
5.1.2 Switch 語句
switch 語句可以看作是if-else組合的一種變體,如果需要比較有限值的變量,通常會使用switch語句;
語法格式: switch (){ case value: //statements break; default: //statements }在每個(gè)case塊的末尾處都有break語句,如果沒有break語句,就會執(zhí)行所有后續(xù)的case塊,直到遇到break語句為止;
5.2 循環(huán)語句
5.2.1 While
語法格式:
while(){ //statements }例:
$count = 1; While ($count < 5) { echo "$count 平方 = ".pow($count, 2)."<br />"; $count++; }5.2.2 do…while
do…while循環(huán)是while的一種變體,它在代碼塊的結(jié)束處驗(yàn)證循環(huán)條件;
語法格式:
do { //statements}while();例:
$count = 11;do { echo "$count squared = ". pow($count, 2). "<br />"; $count++;}while($count < 10);5.2.3 for循環(huán)
語法格式:
for(1; 2; 3){ //statements}第一個(gè)表達(dá)式1在第一次循環(huán)時(shí)計(jì)算;
第二個(gè)表達(dá)式2在每次循環(huán)時(shí)進(jìn)行計(jì)算,這個(gè)表達(dá)式確定循環(huán)是否繼續(xù)執(zhí)行;
第三個(gè)表達(dá)式exprression3在每次循環(huán)結(jié)束時(shí)計(jì)算;
例:
for($i = 1; $i <= 5; $i++){ echo "$i squared = ".pow($count, 2)."<br/>";}5.2.4 跳出循環(huán)
break
如果包含一個(gè)break語句,將立即結(jié)束 while、do…while、for、foreach、switch的執(zhí)行。
continue
continue語句使當(dāng)前循環(huán)執(zhí)行結(jié)束,并從下一次循環(huán)開始執(zhí)行;
6.函數(shù)
函數(shù)是用來完成某種特定任務(wù)的可重用代碼塊;
函數(shù)可以使程序更具模塊化,擁有良好的結(jié)構(gòu);
函數(shù)定義后在程序中可以重復(fù)調(diào)用;
函數(shù)分為內(nèi)置函數(shù)和自定義函數(shù)。
6.1 函數(shù)分類
內(nèi)置函數(shù)
PHP系統(tǒng)提供了大量功能強(qiáng)大的函數(shù),幫助我們解決各種問題;
創(chuàng)建自定義函數(shù)
function function_name(parameters) { //function body }例:
function sayhello(){ echo 'hello'; }6.2 函數(shù)簡介
函數(shù)用function關(guān)鍵字來聲明;
函數(shù)名稱是由字母或下劃線開始,中間可以包含數(shù)字;
函數(shù)名不區(qū)分大小寫,不過在調(diào)用函數(shù)的時(shí)候,通常使用其在定義時(shí)相同的形式;、
php不支持函數(shù)重載, 所以自定義函數(shù)不能和內(nèi)置函數(shù)重名;
不能在一個(gè)文件中自定義同名的函數(shù);
參數(shù)出現(xiàn)在括號中,如果有多個(gè)參數(shù)用逗號分隔;
函數(shù)調(diào)用
語法格式:
fun_name(parameters);
例:
$val = pow(4, 2);echo pow(3, 3);6.3 函數(shù)的區(qū)別
注意不同語言的區(qū)別:
在Java等強(qiáng)類型語言中方法的名字嚴(yán)格區(qū)分大小寫;
C語言中的函數(shù)也是嚴(yán)格區(qū)分大小寫;
但PHP到現(xiàn)在的版本,函數(shù)名稱不區(qū)分大小寫;
很多語言允許函數(shù)(方法)的重載,即函數(shù)有相同的名稱但是函數(shù)參數(shù)不同;
PHP不支持函數(shù)的重載;
6.4 參數(shù)傳遞
值傳遞(傳值)
函數(shù)內(nèi)對參數(shù)值的改變不會影響函數(shù)外部的值;
引用傳遞(傳址)
有些情況下,可能希望在函數(shù)體內(nèi)對參數(shù)的修改在函數(shù)體外也能反映;
使用引用傳遞參數(shù)要在參數(shù)前加上&符號;
變量本身傳入,傳入后的變量與原變量建立聯(lián)系;
函數(shù)體內(nèi)變量的變化,會影響到原變量本身;
例:
function sum($num_1, $num_2){ $res = $num_1 + $num_2; return $res; }默認(rèn)參數(shù)值:可以為參數(shù)指定默認(rèn)值,在沒有提供其他值的情況下,則將默認(rèn)值自動(dòng)賦給該參數(shù);
可選參數(shù):可以指定某個(gè)參數(shù)為可選參數(shù),這些參數(shù)需要放在參數(shù)列表的末尾,需且要指定其默認(rèn)值為空;
如果指定了多個(gè)可選參數(shù),可以選擇性地傳遞某些參數(shù);
6.5 返回值
通常情況下,只依靠函數(shù)做某些事情還不夠; 需要將函數(shù)的執(zhí)行結(jié)果返回給調(diào)用者,這時(shí)可以使用 return 語句返回結(jié)果;
return 語句變執(zhí)行后,將使得函數(shù)立即結(jié)束運(yùn)行,并且將控制權(quán)返回被調(diào)用的行;
例:
function mysquare($num){ if($num == ‘’){ return; } $res = $x * $x; return $res; } echo mysquare(4);6.6 遞歸函數(shù)
遞歸函數(shù)是一個(gè)可以重復(fù)調(diào)用自身的函數(shù),直到滿足某個(gè)條件為止;
遞歸函數(shù)常用來解決一些重復(fù)的問題;
遞歸應(yīng)該特別注意條件,防止進(jìn)入死循環(huán)中;
例:
function repayment($balance, $payment){ static $count = 1; $newbalance = $balance - $payment; echo $count.' '.$newbalance.'<br>'; if($newbalance > 0){ $count++; repayment($newbalance, $payment); }else{ exit; } } $money = 20000; $month_pay = 1000; repayment($money, $month_pay);6.7 變量作用域和生命周期
由于引入了函數(shù),程序中變量的能見度發(fā)生了變化,即變量的作用范圍發(fā)生了改變;
變量分為:全局變量,局部變量,靜態(tài)變量;
局部變量,函數(shù)體內(nèi)定義的變量為局部變量,只在函數(shù)體內(nèi)可見;
局部變量的作用域:從聲明它的那條語句開始到函數(shù)結(jié)束;
例:
$str = 'hello php'; echo '1:'.$str.'<br />'; function change(){ $str = 'hello everyone'; echo '2:'.$str.'<br />'; } change(); echo '3:'.$str;6.8 include和require
include()
include()語句將在其被調(diào)用的位置處包含一個(gè)文件。
例: include(“init.php");
include_once()
include_once()的作用與include()相同,不過它會首先驗(yàn)證是否已經(jīng)包含了該文件,如果已經(jīng)包含,則不再執(zhí)行include_once();
require() 與include() 一樣,只不過require()我們通常放在php程序的最前面;
require_once() 與include_once() 一樣,但是也要放在php程序的最前面;
include和require的區(qū)別
require一個(gè)文件存在錯(cuò)誤的話,那么程序就會中斷執(zhí)行了,并顯示致命錯(cuò)誤
include一個(gè)文件存在錯(cuò)誤的話,那么程序不會中端,而是繼續(xù)執(zhí)行,并顯示一個(gè)警告錯(cuò)誤。
7.數(shù)組
7.1 數(shù)組的概念
數(shù)組可以理解為有序的(鍵-值)對組成的數(shù)據(jù)值的集合;
如果我們把變量理解為單個(gè)值的容器,那么數(shù)組就是可以包含多個(gè)值的容器;
根據(jù)索引值的不同數(shù)組分為:索引數(shù)組和關(guān)聯(lián)數(shù)組;
例:
$day = array(“a”,”a”,”a”); //索引數(shù)組$week = array("a"=> "星期一", "b"=>"星期二", "c"=> “星期三"); //關(guān)聯(lián)數(shù)組7.2 數(shù)組的創(chuàng)建
7.2.1 使用array()函數(shù)
array array ( [mixed ...] )
例:
$arr = array(); $fruits = array("orange", "apple", "banana"); $languages = array("en"=> "english", "cn"=> "china");與其它語言的數(shù)組實(shí)現(xiàn)方式不同,php不需要在創(chuàng)建數(shù)組時(shí)指定其大小;
因?yàn)閜hp是一種松散類型的語言,所以甚至不需要在使用前先聲明;
索引可以是整型數(shù)字或者是字符串;
索引數(shù)組:索引為整數(shù),如果沒有指定索引值則默認(rèn)為零,依次遞增;
關(guān)聯(lián)數(shù)組:索引為字符串的數(shù)組;
7.2.2 直接對數(shù)組變量賦值
$arr[key] = value;
例:
$fruits[] = "orange"; $fruits[] = "apple"; $languages["en"] = "english"; $languages["cn"] = "china";如果方括號中沒有指定索引,則取當(dāng)前最大整數(shù)索引值,新的鍵名將是該值 + 1。
如果當(dāng)前還沒有整數(shù)索引,則鍵名將為0。如果指定的鍵名已經(jīng)有值了,該值將被覆蓋。
7.2.3 使用函數(shù)創(chuàng)建數(shù)組
range() 建立一個(gè)包含指定范圍單元的數(shù)組
例:
$num = range(1, 100); print_r($num); $letter = range('a','I'); print_r($letter);7.3 數(shù)組的基本操作
unset() 釋放給定的變量
print_r() 打印數(shù)組
count() 取得數(shù)組大小
in_array() 檢查數(shù)組中是否包含某個(gè)值
7.4 遍歷數(shù)組
for 循環(huán)遍歷數(shù)組
使用數(shù)組指針遍歷數(shù)組
key() 返回?cái)?shù)組當(dāng)前指針元素的索引;
current() 返回?cái)?shù)組當(dāng)前指針元素的值;
next() 將數(shù)組指針向前移動(dòng)一位,并返回當(dāng)前指針元素的值; 如果超出了數(shù)組元素的末尾,則返回FALSE
prev() 將數(shù)組指針往回移動(dòng)一位, 并返回當(dāng)前指針元素的值; 如果指針本來就位于數(shù)組的第一個(gè)位置則返回FALSE;
reset() 將指針指向第一個(gè)元素,并返回第一個(gè)元素的值
end() 將數(shù)組指針指向最后一個(gè)元素, 并返回最后一個(gè)元素的值;
each() 返回?cái)?shù)組當(dāng)前指針元素的鍵和值,并將指針推進(jìn)一個(gè)位置;如果內(nèi)部指針越過了數(shù)組的末端,則 each() 返回 FALSE。
list() 把數(shù)組中的值賦給一些變量;
foreach 循環(huán)遍歷數(shù)組
例1:
$fruits = array('apple', 'banana', 'orange'); echo current($fruits ); each($fruits ); //使用each()推進(jìn)指針向前一步 echo current($fruits ); next $fruits ); //也可以使用next() 推進(jìn)指針向前一步 echo current($fruits ); end($fruits ); //將數(shù)組指針指向最后一個(gè)元素 print_r(each($fruits)); list($val1, $val2, $val3) = $fruits; echo $val1; echo $val2; echo $val3;例2:
$fruits = array('apple', 'banana', 'orange'); do{ echo key($fruits). '=> '.current($fruits); }while(next($fruits)); while($arr = each($fruits)){ echo $ arr['key'].''.$arr['value']; } while(list($key, $value) = each($fruits)){ echo $key.''.$value; }7.5 二維數(shù)組
數(shù)組元素的值也可以是數(shù)組;
例:
$result = array( array( 'pname'=> 'nokia n73', 'price'=> 1500, ), array( 'pname'=> 'nokia 5800', 'price'=> 2000, ), );遍歷二維數(shù)組:
foreach($products as $product_k=>$product_v){ foreach($product_v as $key=>$val){ echo $key.'=>'.$val; } }7.6 數(shù)組字符串轉(zhuǎn)換
explode() 返回由字符串組成的數(shù)組
例:
$str = "1,2,3,4,5,6"; $arr = explode(',', $str); print_r($arr);implode() 將數(shù)組元素連接成字符串
例:
$arr = array('a','b', 'c', 'd'); $str = implode('|', $arr ); echo $str;8. 字符串
8.1 輸出字符串
echo
void echo ( string arg1 [, string ...] )
是一個(gè)語法 ,不是函數(shù)
echo 沒有返回值;
echo 可以輸出多個(gè)值,使用逗號分隔;
例:
$val = "world"; echo "hello", $val;print
int print ( string arg ) 實(shí)際上不是一個(gè)函數(shù)(它是一個(gè)語言結(jié)構(gòu))
例:
print ("hello $val"); print "hello world”;printf()
功能:格式化輸出字符串;
int printf ( string format [, mixed args [, mixed ...]] )
--
%b二進(jìn)制輸出brianry
%d整數(shù)輸出data
%f浮點(diǎn)數(shù)輸出float
%s字符串輸出string
例:
$str = "123 test"; printf("整數(shù):%d", $str); printf("浮點(diǎn)數(shù):%.2f", $str); printf("字符串:%s", $str);sprintf()
功能與printf相同,但不會直接輸出結(jié)果;
string sprintf ( string format [, mixed args [, mixed ...]] )
例:
$str = "123 test"; $val = sprintf("%d", $str); echo $val;8.2 查找與替換
strpos()
int strpos ( string haystack, mixed needle [, int offset] )
strpos()函數(shù)在 haystack 中以區(qū)分大小寫的方式找到 needle 第一次出現(xiàn)的位置;
如果沒有找到則返回FALSE;
可選參數(shù)offset 指定開始查找的位置;
例:echo strpos("Hello world!","wo");
stripos()
stripos()與strpos()功能相同,只是查找時(shí)不區(qū)別大小寫;
str_replace()
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )
str_replace()函數(shù)在subject中以區(qū)分大小寫的方式搜索 search ,
用replace替換找到的所有內(nèi)容; 如果沒有找到search,則subject保持不變;
如果定義了可選參數(shù) count 則只替換subject中count個(gè)search
例:
$str = "test@163.com"; $email = str_replace("@", "(at)", $str); echo $email;
str_ireplace()
str_ireplace()與str_replace()功能相同,只是不區(qū)分大小寫;
8.3 截取與字符串
substr()
string substr ( string string, int start [, int length] )
從start位置取出length長度的字符,字符串位置開始值為零;
如果沒有指定length,那么默認(rèn)一直到字符串末尾;
例:
echo substr("Hello world", 6);echo substr("hello world", 6, 5);
strstr()
string strstr ( string haystack, string needle )
strstr() 函數(shù)搜索一個(gè)字符串在另一個(gè)字符串中的第一次出現(xiàn)
該函數(shù)返回字符串的其余部分(從匹配點(diǎn))。如果未找到所搜索的字符串則返回
fas。?
例:echo strstr("Hello world!","world");
stristr()
stristr()與strstr()功能相同,只是不區(qū)分大小寫;
例: echo strstr("Hello world!","WORLD");
8.4 刪除字符串
ltrim()
string ltrim ( string str [, string charlist] )
ltrim 函數(shù)刪除字符串左側(cè)空格或其他預(yù)定義字符;
如果未設(shè)置charlist參數(shù),則刪除以下字符:
-|-
:--|:--
"\0" |NULL
"\t" | 制表符
"\n" |換行
"\x0B" |垂直制表符
"\r" |回車
" " |空格
rtrim()
string rtrim ( string str [, string charlist] )
rtrim 函數(shù)刪除字符串右側(cè)空格或其他預(yù)定義字符;
trim()
trim 函數(shù)刪除字符串兩側(cè)空格或其他預(yù)定義字符;
8.5 其他函數(shù)處理
strlen() 獲取字符串長度
例:
$passwd = "123456"; if(strlen($passwd) < 8){ echo "密碼不能少于8位"; }
strtolower() 將字符串轉(zhuǎn)換為小寫字母
例:
$url = "HTTP://WWW.WENDOWS.COM/ "; echo strtolower($url);
strtoupper() 將字符串轉(zhuǎn)換為大寫字母
例:
$str = "中文 hello world"; echo strtoupper($str);
strrev() 反轉(zhuǎn)字符串
例:
$str = "hello world"; echo strrev($str);
nl2br() 將字符串中換行 (\n) 轉(zhuǎn)換成 HTML 換行標(biāo)簽 (
)
例:
$str = "hello world"; echo nl2br($str);
strip_tags() 刪除字符串中HTML XML PHP 標(biāo)簽
string strip_tags ( string str [, string allowable_tags] )
可選參數(shù) allowable_tags 指定要保留的標(biāo)簽;
例:
$str = "test <a ; echo strip_tags($str);
htmlspecialchars() 函數(shù)把一些預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體
預(yù)定義的字符是:
-|-|-
:--|:--|:--
& |(和號) | 成為 &
" |(雙引號)| 成為 "
' |(單引號)| 成為 '
< |(小于) | 成為 <
> |(大于) | 成為 >
例:
$str = "<p> 這是一個(gè)段落 </p>"; echo htmlspecialchars($str);
9. Ajax基礎(chǔ)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> window.onload = function(){ var ajax = null; if (window.XMLHttpRequest) { ajax = new XMLHttpRequest(); } else { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } ajax.open('127.0.0.1/lesson3.php?name=xiaopang',true); //發(fā)送請求 ajax.send(); //響應(yīng)回調(diào) ajax.onreadystatechange = function(){ //readyStatue 表明服務(wù)器接到響應(yīng) //state 是服務(wù)器的狀態(tài) if (ajax.readyStatue == 4 && (ajax.state >=200 || ajax.state<300 ||ajax.state == 304)) { document.innerHTML = ajax.responseText; } } } </script></head><body></body></html>10.今日學(xué)習(xí)代碼記錄(僅作記錄作用,無須查看)
<?php/*//最常用的 PHP 標(biāo)記//標(biāo)記內(nèi)部表明是 PHP 環(huán)境//第一個(gè)變量 //以 $ 開頭,數(shù)字字母下劃線組成,并且不能用數(shù)字作為變量開頭。 //而且區(qū)分大小寫。 $age = 34; //引用賦值,可以理解為兩個(gè)變量用的一塊控件 //我們一般將 “ & ” 叫為取址符 $age1 = &$age1; //輸出 echo($age1); //變量的變量 $var_1 = "hello"; $$var_1 = "world"; echo $var_1; //hello echo $$var_1; //world echo $hello; //world 變量的變量也可以成為變量 var_1 //識別 HTML 標(biāo)簽 echo "<br />"; // echo $_SERVER["SERVER_NAME"]; *///=======================================================================// 超全局變量//======================================================================= //$_GET 獲取 get 請求的參數(shù)(前后端命名一定要一致) // echo $_GET["username"]; // echo $_GET["password"]; //$_POST 獲取 post 請求的參數(shù) // echo $_POST["username"]; // echo $_POST["password"];//=======================================================================// 常 量//======================================================================= //自定義常量,在其他語言里面頁腳宏定義 // define('PI', 3.1415928); // echo PI; //魔術(shù)常量 // echo __LINE__; //顯示當(dāng)前代碼是多少行//=======================================================================// 數(shù)據(jù)類型//======================================================================= //單雙引號的區(qū)別 // $name = "pang"; //雙引號中默認(rèn)是不識別的,判定為字符串 // echo "my name is $name"; //單引號不會替換變量,默認(rèn)內(nèi)容是字符串 // echo 'my name is $name'; //如果你想要將一個(gè)變量替換至字符串中,你需要使用 {} 去包裹起來內(nèi)容 // echo "my name is {$name}asdasdasdasda"; //定界符 結(jié)束符 以'<<<EOD'開頭,以‘EOD’結(jié)尾,并且結(jié)尾符號一定要存在于換行的開頭 //主要用于 分隔字符// $str = <<<EOD// duang,duang,duang// EOD;// echo $str; //字符串的轉(zhuǎn)義 // $str = "str\$"; // echo $str; //自動(dòng)類型轉(zhuǎn)換 //字符串與數(shù)字相加,字符串轉(zhuǎn)化規(guī)則,從第一位去取,直到取到一個(gè)非數(shù)字時(shí)結(jié)束。 // $name = "pang"; // $age = 18; // echo $name.$age; //pang18 // echo $name+$age; //18 從開始取數(shù)字轉(zhuǎn)化為整型,到非數(shù)字時(shí)停止 //類型相關(guān)函數(shù) //gettype() 獲取數(shù)據(jù)類型 // $str = "nihao"; // $age = 19; // echo gettype($str); // echo gettype($age); //is_interger() 確定該數(shù)據(jù)是否是某類型 // $str = "nihao"; // echo is_integer($str); // echo is_string($str); //var_dump() 打印詳細(xì)數(shù)據(jù)信息 // $str = "nihao"; // var_dump($str); //string 5 "nihao"http://=======================================================================// 運(yùn)算符//======================================================================= //拼接賦值 $str = $str.20 // $str .=20; // echo $str; //遞增遞減 //++在前,執(zhí)行運(yùn)算前先自身加一 //++在后,先運(yùn)算完成,再加一 // $age1 = 20; // $age2 = $age1++; // $age3 = ++$age1; // echo $age1; //20 // echo $age2; //20 // echo $age3; //22 //三目運(yùn)算符 //前面表達(dá)式為真,則取前面的值,如果為假,則去后面的值 // $a = 20; // $b = 15; // $is_ture = $a > $bTRUE:FALSE; // echo $is_ture;?><?php//=================================================// 循環(huán)//=================================================//分支結(jié)構(gòu)//if..else..// if (判斷語句) {// # code...// }elseif (判斷語句) {// # code...// }// else{// # code...// }//下面來看一個(gè)很特殊的小栗子。//我們在 if 內(nèi)部去寫一個(gè)永遠(yuǎn)成立的式子。//之后我們在內(nèi)部去做++,但是我們出來之后,//發(fā)現(xiàn)出來 A 的值 是 1. B 的 值里面是 31.//我們也能看見 a 的類型變成了 BOOL 類型。//所以我們怎么++ , a 的值還是1,大家需要注意一下(判斷使用 == 式子就正確了)// $a = $b = 30;//// if ($a = 30 || $b = 30){// $a++;// $b++;// }// var_dump($a);// var_dump($b);// echo $a;// echo "<hr>";// echo $b;//switch case// switch ($a) {// case '30':// # code...// echo "變量 $a 等于 30,走這里";// break;// default:// # code...// echo "上面結(jié)果全部不符合才走這里"http:// break;// }//for// for ($i=0; $i < 10; $i++) {// # code...// echo "我是第{$ i}次<br>";// }//跳出循環(huán) break continue// for ($i=0; $i < 10; $i++) {// # code...// if($i == 5){// echo "我是第{$ i}次<br>";// continue;// }// echo "我是第 {$i}次循環(huán)";// }////=================================================// 函數(shù)//=================================================//function + 函數(shù)名 +(參數(shù)列表){// 函數(shù)體//}//function sum($a,$b){// echo $a + $b;// //return 的函數(shù)返回值// return $a + $b;//}//sum(3, 5);//函數(shù)參數(shù)有默認(rèn)值,如果調(diào)用的時(shí)候不傳值,會直接使用默認(rèn)值//function funName($value='345'){// echo $value;//}//funName();//遞歸函數(shù)//自己調(diào)用自己,并且首先返回最后一次結(jié)果,之后依次返回//function fun($n) {// if ($n == 1) {// return 1;// }// $number = $n * fun($n - 1);// return $number;//}//echo fun(5);//變量分為局部變量,全局變量和靜態(tài)變量//function sum($a){// //局部變量 : 函數(shù)調(diào)用結(jié)束后立馬釋放// $b = 5;// $b++;// echo $b;// // //靜態(tài)變量 : 只能初始化一次,靜態(tài)變量不會立馬釋放// static $c = 10;// $c++;// echo $c;//}//sum();//sum();//sum();//=================================================// 變量//=================================================//全局變量 : 聲明在函數(shù)外,全局都可以訪問//$name = "asdasda";//function dosomething(){// echo $GLOBALS['name'];//}//=================================================// 數(shù)組//=================================================//關(guān)聯(lián)數(shù)組,類似于 oc 中的字典//$arr = array('name' => 'xiaopang','age' => 'woman') ;////索引數(shù)組//$arr_1 = array('23','4234','234');////echo $arr['name'];//var_dump($arr);//echo $arr_1[0];//var_dump($arr_1);////使用系統(tǒng)函數(shù)初始化創(chuàng)建數(shù)組////直接賦值生存數(shù)組,索引值可以自定義//$arr_2[0]="asd";//var_dump($arr_2);////$arr_3['name'] = "qweqwe";//var_dump($arr_3);////只能識別數(shù)字或者字符,字符串默認(rèn)取第一位,如果是英文字符,則默認(rèn)是 0 //$lists = range(100, 1);//print_r($lists); //打印數(shù)組//unset($lists); //釋放數(shù)組////foreach 遍歷數(shù)組//$arr = array('name'=>'xiaopang','age'=>18);//foreach($arr as $key =>$value){// echo $key,$value;//}////數(shù)組的排序//$arr = array('name'=>'xiaopang','age'=>18,'height'=>187);////sort()排序 如果是字符串就按照 ascii 排序,如果是數(shù)字就直接排序,如果有數(shù)字,有字符串,數(shù)字大于字符串,且字符串按照 ascii 排序//$arr_2 = sort($arr);//print_r($arr);////rsort()降序////ksort()按照鍵值 升序排序////ksort()按照鍵值 降序排序////=================================================//// 字符串////=================================================////查找字符串,并且返回當(dāng)前下標(biāo),區(qū)分大小寫//$s = strpos("asdaasdasdasd", 'asd');//echo $s;////stripos 和 strpos 功能一致,只是不區(qū)分大小寫//////字符串替換//$str1 = str_replace('3g', 'keji', $str);//echo $str1;////str_ireplace($search, $replace, $subject) 和 str_replace 功能一致,只是不區(qū)分大小寫?>