第一篇:學(xué)習(xí)使用PHP數(shù)組
如果你有很大的一個數(shù)組,而所要完成的僅是找出一個存在的給定值,你可以使用in_array()以返回true 或 false。如下代碼將輸出“Not found in this array”——因為你將在$namesArray中尋找一個并不存在的“Alber ”。
$namesArray = array(“Joe”, “Jane”, “Bob”, “Mary”, “Paul”, “Eddie”, “John”)$lookingFor = “Albert” if(in_array($lookingFor, $namesArray)){ echo “You've found it!” } else { echo “Not found in this array!” ?> 如果你改變了$lookingFor的值,將其變?yōu)椤癕ary”,你將得到消息“You've found it!”——因為“Mary”是$namesArray的一部分。如果希望對數(shù)組元素計數(shù),你可以使用count()函數(shù):
$namesArray = array(“Joe”, “Jane”, “Bob”, “Mary”, “Paul”, “Eddie”, “John”)$count = count($namesArray);?> $count值將為7。
你可以對任何數(shù)組添加元素,無論是在已存在數(shù)組的開始或末尾。你也可以使用函數(shù)以創(chuàng)建一個包含兩個或多個數(shù)組元素的新數(shù)組。合并時每個數(shù)組將按需要的順序排列。如果你的數(shù)組已經(jīng)有內(nèi)部的排序,你需要對新的合并數(shù)組重排序。讓我們從對已存在數(shù)組的末尾增添元素開始,使用函數(shù)array_push(): /* 創(chuàng)建原始數(shù)組 */ $fruitArray = array(“apple”, “orange”, “banana”, “kiwi”, “pear”)/* 加入到原始數(shù)組中 */ array_push($fruitArray, “grape”, “pineapple”, “tomato”)/* 通過其鍵值列出每個元素*/ while(list($key,$value)= each($fruitArray)){ echo “$key : $value
” ?> 這將顯示: 0 : apple 1 : orange 2 : banana 3 : kiwi 4 : pear 5 : grape 6 : pineapple 7 : tomato 當(dāng)你需要對數(shù)組開頭添加元素時,代碼非常類似。不同處只是函數(shù)名:array_unshift()而不是array_push()。 /* 創(chuàng)建原始數(shù)組 */ $fruitArray = array(“apple”, “orange”, “banana”, “kiwi”, “pear”)/* 加入到原始數(shù)組中 */ array_unshift($fruitArray, “grape”, “pineapple”, “tomato”)/* 通過其鍵值列出每個元素*/ while(list($key,$value)= each($fruitArray)){ echo “$key : $value
” ?> 這將顯示: 0 : grape 1 : pineapple 2 : tomato 3 : apple 4 : orange 5 : banana 6 : kiwi 7 : pear 函數(shù)array_merge()合并兩個或更多的數(shù)組。 /* 創(chuàng)建原始數(shù)組 */ $fruitArray = array(“apple”, “orange”, “banana”, “kiwi”, “pear”) /* 創(chuàng)建第二個數(shù)組 */ $vegArray = array(“carrot”, “green beans”, “asparagus”, “artichoke”, “corn”)/* 合并為一個數(shù)組 */ $goodfoodArray = array_merge($fruitArray, $vegArray)/* 通過其鍵值列出每個元素*/ while(list($key,$value)= each($goodfoodArray)){ echo “$key : $value
” ?> 這將顯示: 0 : apple 1 : orange 2 : banana 3 : kiwi 4 : pear 5 : carrot 6 : green bea 7 : asparagu 8 : artichoke 9 : cor 現(xiàn)在已經(jīng)對數(shù)組進行了增加元素和合并,現(xiàn)在來練習(xí)刪除元素函數(shù)。你可以使用函數(shù)array_pop()從一數(shù)組末尾刪除一個元素。如果使用函數(shù) array_shift(),則從一數(shù)組開頭刪除一個元素。而實際上當(dāng)你從數(shù)組刪除元素時,此元素對你而言仍然可用——當(dāng)你從已存在的數(shù)組中對元素進行 pop 或 shift時。使用array_pop()函數(shù)從數(shù)組末尾刪除一個值: /* 創(chuàng)建一數(shù)組*/ $fruitArray = array(“apple”, “orange”, “banana”, “kiwi”, “pear”)/* 在末尾彈出某值 */ $popped = array_pop($fruitArray)/* 列出新數(shù)組內(nèi)容,以及彈出的值*/ while(list($key,$value)= each($fruitArray)){ echo “$key : $value
” echo “
and finally, in $popped: $popped” ?> 這將顯示: 0 : apple 1 : orange 2 : banana 3 : kiwi and finally, in $popped: pear Next, delete an element from the end of an array: ??????????? 下面,從數(shù)組末尾刪除某值: /* 創(chuàng)建一數(shù)組*/ $fruitArray = array(“apple”, “orange”, “banana”, “kiwi”, “pear”)/* 從數(shù)組頭部移出某值 */ $shifted = array_shift($fruitArray)/* 列出新數(shù)組的內(nèi)容以及移出的值*/ while(list($key,$value)= each($fruitArray)){ echo “$key : $value
” echo “
and finally, in $shifted: $shifted” ?> 這將顯示: 0 : orange 1 : banana 2 : kiwi 3 : pear and finally, in $shifted: apple 有很多函數(shù)可以幫助你對數(shù)組元素排序。但我將會演示基本的排序以幫助你了解其過程:
/* 創(chuàng)建原始數(shù)組 */ $fruitArray = array(“apple”, “orange”, “banana”, “kiwi”, “pear”)/* 排序 */ ort($fruitArray)/* 對其重設(shè)以正確從頭到尾顯示數(shù)組 */ /* 通過其鍵值列出每個元素*/ while(list($key,$value)= each($fruitArray)){ echo “$key : $value
” ?> 這將顯示: 0 : apple 1 : banana 2 : kiwi 3 : orange 4 : pear
第二篇:PHP學(xué)習(xí)推薦
PHP學(xué)習(xí)推薦
PHP,是英文超級文本預(yù)處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,現(xiàn)在越來越多的人加入到了php的大家庭中,其中很多人只是淺嘗輒止,為何會如此呢?最大的障礙莫過于學(xué)習(xí)的過程枯燥乏味,從而失去學(xué)習(xí)興趣,那么小編就自己的經(jīng)驗來說說怎樣學(xué)習(xí)php吧。
學(xué)習(xí)方法之視頻教程
相對于讀書來說,我更喜歡看視頻學(xué)習(xí),可能小編我對影像比文字記憶更加深刻吧。每看完一個視頻教程,我都會閉上眼睛休息一會,把剛才看的內(nèi)容消化消化,然后再開始練習(xí)剛才看過的內(nèi)容,盡可能不邊看邊做,因為這樣學(xué)的快同樣也忘得快,如果實在想不起來的話,可以再打開教程看一遍,切記不可囫圇吞棗,好高騖遠,要穩(wěn)扎穩(wěn)打,把你看過的教程切切實實的記在心里。只有一步一個腳印,你的學(xué)習(xí)之路才能走的更遠,否則的話,你走的越遠,越會覺的道路是如此艱辛,或許你就會放棄學(xué)習(xí)。那么都有哪些視頻教程能幫我們學(xué)習(xí)php呢,小編我就為大家介紹幾個吧:
php100
LAMP兄弟連
李炎恢的php
學(xué)習(xí)方法之看書: 1.《PHP與MySQL程序設(shè)計(第4版)》
2.《PHP Web 2.0 開發(fā)實戰(zhàn)》
3.《PHP高級程序設(shè)計:模式、框架與測試》
4.《PHP 5 高級應(yīng)用開發(fā)實踐》
5.《細說php》
學(xué)習(xí)過程中不要死記語法,要多動手,多練習(xí),當(dāng)你遇到問題的時候,首先嘗試自己解決。多用google,baidu,網(wǎng)絡(luò)是一個大知識庫,是最好的老師,你遇到的問題,別人也遇到過,多去搜索一下吧.多閱讀別人的源代碼,要看懂別人的設(shè)計思想,不斷融為已用.
第三篇:Delphi之動態(tài)數(shù)組使用總結(jié)
Delphi之動態(tài)數(shù)組使用總結(jié)
傳統(tǒng)的Pascal 語言其數(shù)組大小是預(yù)先確定的,當(dāng)你用數(shù)組結(jié)構(gòu)聲明數(shù)據(jù)類型時,你必須指定數(shù)組元素的個數(shù)。專業(yè)程序員也許知道些許動態(tài)數(shù)組的實現(xiàn)技術(shù),一般是采用指針,用手工分配并釋放所需的內(nèi)存。
Delphi 4中增加了非常簡單的動態(tài)數(shù)組實現(xiàn)方法,實現(xiàn)過程效仿我前面講過的動態(tài)長字符串。與長字符串一樣,動態(tài)數(shù)組的內(nèi)存動態(tài)分配并且引用記數(shù),不過動態(tài)數(shù)組不支持 copy-on-write 技術(shù)。這不是個大問題,因為你可以把變量值設(shè)置為nil釋放數(shù)組內(nèi)存。
這樣你就可以聲明一個不指定元素個數(shù)的數(shù)組,并用SetLength 過程給數(shù)組分配一個特定大小的內(nèi)存,SetLength 過程還可以改變數(shù)組大小而不影響其內(nèi)容,除此外還有一些字符串過程也可用于數(shù)組,如Copy 函數(shù)。
以下摘錄的代碼突出了一點,這就是:定義數(shù)組后必須先為它分配內(nèi)存,然后才能開始使用:
procedure TForm1.Button1Click(Sender: TObject);var Array1: array of Integer;begin Array1 [1] := 100;// error SetLength(Array1, 100);Array1 [99] := 100;// OK...end;如果你只定義一個數(shù)組元素個數(shù),那么索引總是從0開始。Pascal 中的普通數(shù)組既能用不為零的下標(biāo),也能用非整數(shù)的下標(biāo),但動態(tài)數(shù)組均不支持這兩種下標(biāo)。象普通數(shù)組一樣,你可以通過Length、High和Low 函數(shù)了解到動態(tài)數(shù)組的狀況,不過對于動態(tài)數(shù)組,Low 函數(shù)返回值總是0,High函數(shù)返回數(shù)組大小減1,這意味著空的動態(tài)數(shù)組其函數(shù)High返回值是-1,這是一個很怪的值,因為它比Low的返回值還小。
圖 8.1: 例 DynArr 窗體
以上作了簡短的介紹,現(xiàn)在舉個簡例,例名DynArr,見圖8.1。例子實在是很簡單,其實動態(tài)數(shù)組沒有什么特別復(fù)雜地方。我想通過該例說明幾個程序員可能犯的錯誤。程序中聲明了兩個全程數(shù)組并在OnCreate 事件中初始化了第一個數(shù)組:
var Array1, Array2: array of Integer;procedure TForm1.FormCreate(Sender: TObject);begin // allocate SetLength(Array1, 100);end;這樣就把數(shù)組所有值設(shè)置為0。完成這段代碼你馬上就能讀寫數(shù)組元素的值,而不用害怕內(nèi)存出錯,當(dāng)然條件是你沒有試圖訪問超過數(shù)組上界的元素。為了更好地初始化,程序中添加了一個按鈕,執(zhí)行數(shù)組元素賦值操作: procedure TForm1.btnFillClick(Sender: TObject);var I: Integer;begin for I := Low(Array1)to High(Array1)do
Array1 [I] := I;end;Grow 按鈕用于修改數(shù)組大小,但并不影響數(shù)組內(nèi)容。單擊Grow 按鈕后,你可以用Get value按鈕進行檢驗:
procedure TForm1.btnGrowClick(Sender: TObject);begin // grow keeping existing values SetLength(Array1, 200);end;procedure TForm1.btnGetClick(Sender: TObject);begin // extract Caption := IntToStr(Array1 [99]);end;Alias 按鈕的OnClick 事件代碼稍復(fù)雜些,程序通過 := 算子把一個數(shù)組拷貝給另一個數(shù)組,從而有效地創(chuàng)建了一個別名(一個新變量,但引用內(nèi)存中同一數(shù)組)。從中可見,如果你改變了其中一個數(shù)組,那么另一個同樣也會改變,因為它們指向同一個內(nèi)存區(qū):
procedure TForm1.btnAliasClick(Sender: TObject);
begin // alias Array2 := Array1;// change one(both change)Array2 [99] := 1000;// show the other Caption := IntToStr(Array1 [99]);
在btnAliasClick 事件中增加了兩部分操作內(nèi)容。第一部分是數(shù)組等同測試,不過并不是測試實際的數(shù)組元素,而是測試數(shù)組所引用的內(nèi)存區(qū),檢測變量是不是內(nèi)存中同一數(shù)組的兩個別名:
procedure TForm1.btnAliasClick(Sender: TObject);begin...if Array1 = Array2 then
Beep;// truncate first array Array1 := Copy(Array2, 0, 10);end;btnAliasClick 事件的第二部分內(nèi)容是調(diào)用Copy 函數(shù)。該函數(shù)不僅把數(shù)據(jù)從一個數(shù)組移到另一個數(shù)組,而且用函數(shù)創(chuàng)建的新數(shù)組取代第一個數(shù)組,結(jié)果變量Array1 所引用的是11個元素的數(shù)組,因此,按Get value 和Set value 按鈕將產(chǎn)生一個內(nèi)存錯誤,并且觸發(fā)一個異常(除非你把范圍檢查range-checking 選項關(guān)掉,這種情況下,錯誤仍在但屏幕上不會顯示異常)。雖然如此,F(xiàn)ill 按鈕仍能正常工作,因為需要修改的數(shù)組元素由數(shù)組當(dāng)前的下標(biāo)范圍確定。
自從有了動態(tài)數(shù)組,鏈表除了在教科書里出現(xiàn)外,已經(jīng)很少在實際編程中被使用了,事實也是如此,數(shù)組的確比傳統(tǒng)鏈表快得多,而且也方便的多。
從 Delphi4起,開始了內(nèi)建各種類型的動態(tài)數(shù)組支持。但是,對我們來說動態(tài)數(shù)組支持似乎做的不夠徹底,因為Delphi竟然連刪除、插入、移動連續(xù)元素的函數(shù)都沒有提供,讓人使用起來總覺得不夠爽?。。作為一名程序員,我們當(dāng)然要有自己解決問題的能力,下面就讓我們簡單介紹一下Delphi 下的動態(tài)數(shù)組。
在Delphi中,數(shù)組類型有靜態(tài)數(shù)組(a : array[0..1024] of integer)、動態(tài)數(shù)組(var a : array of integer)、指針數(shù)組(即指向靜態(tài)數(shù)組的指針)和開放數(shù)組(僅用于參數(shù)傳遞)。靜態(tài)數(shù)組、指針數(shù)組有速度快的好處,動態(tài)數(shù)組有大小可變的優(yōu)勢,權(quán)衡之下就有了折衷的辦法,那就是定義的動態(tài)數(shù)組在必要時轉(zhuǎn)換為指針。
動態(tài)數(shù)組聲明之后,只有下面幾個函數(shù)可┎僮鰨?o:p>
1.設(shè)置數(shù)組大小,可以任意縮減或增加數(shù)組大小
Procedure SetLength(var S;NewLength : integer);
2.取出連續(xù)元素,復(fù)制給另一個數(shù)組變量
Function Copy(s;Index,Count : integer): array;
3.取得數(shù)組大小及上下限
Function Length(s):integer;
Function High(x):integer;
Function Low(x):integer;
值得注意的是,不加const或var修飾的動態(tài)數(shù)組會被作為形參傳遞,而動態(tài)數(shù)組用const修飾并不意味著你不能修改數(shù)組里的元素(不信你可以字自己在程序中試試。還有一點是High函數(shù)調(diào)用了Length 函數(shù),所以我們在獲取數(shù)組上限時最好直接用 Length(s)函數(shù)。
動態(tài)數(shù)組在內(nèi)存空間中占用4個字節(jié).動態(tài)數(shù)組在內(nèi)存中的分配表如下:
偏移量
內(nèi)容
32-bit 引用計數(shù)
32-bit 數(shù)組長度
0..數(shù)組長度 *(元素尺寸)4)^;// 變量的長度,偏移量-4
if index >= len then //要刪除的位置超出范圍,退出
Exit;
MaxDelete := len-index;// 最多刪除的數(shù)量
Count := Min(Count, MaxDelete);// 取得一個較小值
if Count = 0 then // 不要求刪除
Exit;
Dec(len, Count);// 移動到要刪除的位置
MoveMemory(PChar(P)+index*elSize , PChar(P)+(index + Count)*elSize ,(len-index)*elSize);//移動內(nèi)存
Dec(P);//移出 “數(shù)組長度”位置
Dec(P);//移出“引用計數(shù)” 位置
//重新再分配調(diào)整內(nèi)存,len 新的長度.Sizeof(Longint)* 2 = 2*Dec(P)
ReallocMem(P, len * elSize + Sizeof(Longint)* 2);
Inc(P);// 指向數(shù)組長度
P^ := len;// new length
Inc(P);// 指向數(shù)組元素,開始的位置
PLongint(A):= P;end;
對上面的例子,我們需要注意的是 elSize 參數(shù),它必須是 SizeOf(DyArray_Name),表示元素所占用的字節(jié)數(shù)。
相信看了上面的例子后,對于動態(tài)數(shù)組的拷貝,移動想必也可以自己實現(xiàn)了吧 J
后續(xù):
其實,Delphi 對許多類型的內(nèi)存分配都很相似,比如 string 類型,其實它和動態(tài)數(shù)組是很相似的,我們完全可以把它拿來當(dāng)成動態(tài)數(shù)組。實質(zhì)上 string 是 Pchar 的簡易版本。不管怎么說,了解一些內(nèi)存的分配對我們這些開發(fā)人員來說還是有一些好處的。
第四篇:快速學(xué)習(xí)php
Php參考手冊介紹
html css 試題
試題1: 請編寫如下一個html頁面
試題2: 請使用(div+css)盒子經(jīng)典布局編寫如下界面
試題3: 請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內(nèi)容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關(guān)函數(shù)對一個url【http://004km.cn
(2)PHP函數(shù)
PHP函數(shù)的基本介紹、如何自定義函數(shù)、PHP頁面調(diào)用函數(shù)、require()、require_once()、include()和include_once()的區(qū)別、從內(nèi)存分析PHP函數(shù)調(diào)用過程、函數(shù)使用需要注意的細節(jié)、函數(shù)值傳遞和引用傳遞的區(qū)別。
函數(shù)是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎(chǔ),掌握好函數(shù)可以提高代碼的復(fù)用性、可讀性和可維護性。
(3)數(shù)組、排序和查找
數(shù)組的基本概念、數(shù)組的引用方式、數(shù)組引用陷阱、與PHP數(shù)組相關(guān)的函數(shù)(count、is_array、print_r、explode等)遍歷數(shù)組的三種方式、刪除數(shù)組元素和數(shù)組運算符、數(shù)組使用細節(jié)總結(jié)、內(nèi)部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數(shù)組介紹和使用。
依據(jù)我的經(jīng)驗,我們?nèi)フ夜ぷ鞯臅r候,一定會一道關(guān)于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數(shù)。在項目開發(fā)中,數(shù)組是銜接變量和函數(shù)的重要數(shù)據(jù)類型,在MVC開發(fā)中,往往需在控制器中將數(shù)組分配給視圖去顯示,在算法中,數(shù)組也是變化最為靈活的。
(4)面向?qū)ο缶幊?/p>
面向?qū)ο缶幊袒靖拍?、類和對象的關(guān)系、如何定義類、成員屬性(變量)、如何創(chuàng)建對象實例及如何訪問對象屬性、對象在內(nèi)存中存在的形式、棧、堆、全局區(qū)、常量區(qū)和代碼區(qū)的關(guān)系、成員方法(函數(shù))及使用細節(jié)、構(gòu)造方法(函數(shù))、默認構(gòu)造方法(函數(shù))、this的基本概念和使用、析構(gòu)方法(函數(shù))、PHP的對象垃圾回收器、靜態(tài)變量(類變量)的概念和使用、靜態(tài)方法(類方法)的概念和使用、面向?qū)ο缶幊痰娜筇卣鹘榻B、面向?qū)ο缶幊?封裝、面向?qū)ο缶幊?繼承、面向?qū)ο缶幊?多態(tài)、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術(shù)函數(shù)(__set __get __construct __destruct __call等)和魔術(shù)常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區(qū)別、關(guān)鍵字final的使用、常量關(guān)鍵字const 的作用和使用注意事項、面向?qū)ο缶幊讨畯姶蟮姆瓷錂C制、面向?qū)ο缶幊讨畡討B(tài)代理。
面向?qū)ο缶幊桃呀?jīng)成為PHP編程的主流,面向?qū)ο缶幊套尦绦蜃兊酶訌姶蠛挽`活,更利于項目的開發(fā)和維護。關(guān)于面向?qū)ο缶幊?在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向?qū)ο笏枷?,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發(fā)器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設(shè)置頂級異常處理器、異常使用的規(guī)則。
在編寫php web 應(yīng)用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業(yè),也為安全風(fēng)險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預(yù)定義超全局數(shù)組
預(yù)定義超全局數(shù)組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數(shù)據(jù)存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關(guān)于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區(qū)別。
Cookie(小甜餅)是客戶端技術(shù),服務(wù)器把每個用戶的數(shù)據(jù)以cookie的形式 寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時,就會帶著各自的數(shù)據(jù)去。
Session是服務(wù)器端技術(shù),利用這個技術(shù),服務(wù)器在運行時可以為每一個用 戶的瀏覽器創(chuàng)建一個其獨享的session文件,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時,可以從用戶各自的session 中取出數(shù)據(jù)為用戶服務(wù)。Session和Cookie是最重要的用戶行為跟蹤技術(shù),尤其是電商,sns項目中運用廣泛,因此是我們學(xué)習(xí)的重點和難點,也是面試筆試的重點。關(guān)于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數(shù)匯總介紹、最常用的13個文件函數(shù)、使用文件完成網(wǎng)站計數(shù)器、文件上傳下載操作-mini版音樂共享網(wǎng)、無限級文件掃描器。
文件最主要的作用就是保存數(shù)據(jù),它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節(jié)要求同學(xué)們掌握文件的各種操作和上傳下載,動態(tài)創(chuàng)建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發(fā)非常重要。
(9)PHP繪圖技術(shù)
php繪圖坐標(biāo)系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數(shù)、繪圖技術(shù)的實際運用—人口分布餅狀統(tǒng)計圖、專業(yè)的報表開發(fā)--JpGraph、JpGraph的安裝和配置、JpGraph實際應(yīng)用-網(wǎng)民支持情況統(tǒng)計圖、JpGraph中文亂碼處理。
如果你使用過財務(wù)軟件,那你一定看見過各種對財務(wù)數(shù)據(jù)進行統(tǒng)計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態(tài)顯示數(shù)據(jù)。而這些圖表的顯 示都要使用到PHP的繪圖技術(shù),繪圖技術(shù)要求熟練的使用PHP的繪圖函數(shù)完成項目的需求。能開發(fā)一些統(tǒng)計圖,非常有實用價值。比如:
推薦學(xué)習(xí)傳智播客 php視頻教程
下載地址 http://php.itcast.cn
如何檢驗自己的學(xué)習(xí)效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學(xué)到還不錯。
練習(xí)1: 簡述echo(),print(),print_r()的區(qū)別?
練習(xí)2: 說出PHP的超級全局變量數(shù)組,共九種
練習(xí)3: 如何在一個php函數(shù)中使用具有全局屬性的變量,說出兩種方式
練習(xí)4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績?nèi)〉粢粋€最高分,去掉一個最低分,剩下的6個分數(shù)的平均分就是最后得分。使用一維數(shù)組實現(xiàn)打分功能。
4.2.請把打最高分的評委和最低分的評委找出來。4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習(xí)5: include和require都能把另外一個文件包含到當(dāng)前文件中,他們有什么區(qū)別?Include和include_once又有什么區(qū)別?
練習(xí)6: 寫出一個能創(chuàng)建多級目錄的PHP函數(shù)
練習(xí)7: 寫出一個函數(shù),能遞歸列出某個目錄下的所有文件夾和文件名.練習(xí)8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉(zhuǎn)義,需要用到哪個函數(shù) 練習(xí)9: 寫出插入排序法和快速排序法代碼
練習(xí)10: 二分查找的原理是什么? 請寫出二分查找函數(shù)
練習(xí)11: 寫出php的public、protected、private三種訪問控制模式的區(qū)別 練習(xí)12: 請寫出一個完整的嚴(yán)謹?shù)膯卫J?/p>
練習(xí)13: __set 和 __get 魔術(shù)函數(shù)是做什么的,在什么時候被觸發(fā) 練習(xí)14: 如何防止對象克隆, 對象克隆會復(fù)制 static屬性嗎? 練習(xí)15: 說說strip_tags的作用和用法?
練習(xí)16: 如果需要原樣輸出用戶輸入的內(nèi)容,在數(shù)據(jù)入庫前,要用哪個函數(shù)處理? 練習(xí)17: 如何控制多個進程去并發(fā)刪除,插入和更新數(shù)據(jù)庫的某張表? 練習(xí)18: PHP的安全模式和非安全模式的區(qū)別
(轉(zhuǎn)載請注明 傳智播客php學(xué)院-韓順平http://php.itcast.cn)
當(dāng)然,有些學(xué)員還給我寫信說這樣一個問題,如何去檢驗第一階段: PHP前端網(wǎng)頁開發(fā)基礎(chǔ),學(xué)習(xí)情況, 學(xué)習(xí)到怎樣的水平,再學(xué)習(xí)下一個階段比較好, 大家可以做一下下面的測試題,如果你能將下面的題都完成,說明你已經(jīng)有一定基礎(chǔ),可以學(xué)習(xí)下一個階段:(注意:需要獨立完成)
html css 試題
試題1:
請編寫如下一個html頁面
試題2:
請使用(div+css)盒子經(jīng)典布局編寫如下界面
試題3:
請使用div+css 盒子布局模式編寫sohu首頁面布局
javascript試題
試題1:
請按下面內(nèi)容編寫一個頁面,點頁面里的“全選”時,能選中或清除上面的所有水果。選擇你喜歡的水果:
□蘋果
□桔子
□香蕉
□葡萄
□桃子
□全選/全不選
試題2: 編寫一個簡單顯示和隱藏效果如圖所示:
試題3:
請使用javascript相關(guān)函數(shù)對一個url 【http://004km.cn、163.com 等)
練習(xí)5:計算一個js整數(shù)數(shù)組的所有元素的和。
練習(xí)6:計算一個字符串 , 比如 “abcde中國,你好hello,12345”, 中含有多少個中文字,多少個字母,多少個數(shù)字?
練習(xí)7:將一個js字符串?dāng)?shù)組的元素的順序進行反轉(zhuǎn)。(“3”,“a”,“8”,“haha”)轉(zhuǎn)換為(“haha”,“8”,“a”,“3”)。提示:第i個和第length-i-1個進行交換。不能使用js的reverse()函數(shù)。
好,現(xiàn)在我們談?wù)劦诙€階段應(yīng)該學(xué)習(xí)什么內(nèi)容,如何學(xué)習(xí)的問題。第二階段 PHP核心編程
(1)PHP基本語法加強 Apache--directory配置段、一個IP和多個域名綁定的兩種方式、HTTP協(xié)議入門介紹、Apache邏輯組件介紹、Apache生命周期、PHP運行之時序圖、PHP數(shù)據(jù)類型加強、PHP各種運算符加強、PHP三大流程控制加強、位運算(按位與、按位或、按位異或、按位非、位左移、位右移)、二進制(原碼、反碼、補碼)、PHP版本在線貸款計算器。
這里,我想說明一下: PHP基礎(chǔ)語法看似簡單,但是也不可大意,有些PHP程序員工作了2年,對PHP運行的原理都不清楚,對Apache的一些重要調(diào)優(yōu)配置也不了解,這樣的程序員,在公司是不行的,很難得到提升。所以就一直是一個編碼工人,薪資也上不去。
比如面試中經(jīng)常問到: PHP中一個整數(shù)的范圍是多少, 小數(shù)的能表示的范圍是多少? 再比如如何在Apache中配置一個404錯誤頁面,如何給一個主機配置一個域名,具體怎樣操作?這樣一些基礎(chǔ)的問題都必須在這個階段搞定。推薦大家看 傳智播客php視頻教程 23講-45講 ,有詳細到位的講解。
(2)PHP函數(shù)
PHP函數(shù)的基本介紹、如何自定義函數(shù)、PHP頁面調(diào)用函數(shù)、require()、require_once()、include()和include_once()的區(qū)別、從內(nèi)存分析PHP函數(shù)調(diào)用過程、函數(shù)使用需要注意的細節(jié)、函數(shù)值傳遞和引用傳遞的區(qū)別。
函數(shù)是我們PHP編程最重要的一個知識點,也是進行模塊化編程的基礎(chǔ),掌握好函數(shù)可以提高代碼的復(fù)用性、可讀性和可維護性。
(3)數(shù)組、排序和查找 數(shù)組的基本概念、數(shù)組的引用方式、數(shù)組引用陷阱、與PHP數(shù)組相關(guān)的函數(shù)(count、is_array、print_r、explode等)遍歷數(shù)組的三種方式、刪除數(shù)組元素和數(shù)組運算符、數(shù)組使用細節(jié)總結(jié)、內(nèi)部排序法和外部排序法介紹、冒泡排序和快速排序、選擇排序和插入排序、順序查找和二分查找、二維數(shù)組介紹和使用。依據(jù)我的經(jīng)驗,我們?nèi)フ夜ぷ鞯臅r候,一定會一道關(guān)于排序和查詢的題,最常見的問題是: 請你寫出冒泡排序法,并使用二分查找來查找一個數(shù)。在項目開發(fā)中,數(shù)組是銜接變量和函數(shù)的重要數(shù)據(jù)類型,在MVC開發(fā)中,往往需在控制器中將數(shù)組分配給視圖去顯示,在算法中,數(shù)組也是變化最為靈活的。
(4)面向?qū)ο缶幊?/p>
面向?qū)ο缶幊袒靖拍?、類和對象的關(guān)系、如何定義類、成員屬性(變量)、如何創(chuàng)建對象實例及如何訪問對象屬性、對象在內(nèi)存中存在的形式、棧、堆、全局區(qū)、常量區(qū)和代碼區(qū)的關(guān)系、成員方法(函數(shù))及使用細節(jié)、構(gòu)造方法(函數(shù))、默認構(gòu)造方法(函數(shù))、this的基本概念和使用、析構(gòu)方法(函數(shù))、PHP的對象垃圾回收器、靜態(tài)變量(類變量)的概念和使用、靜態(tài)方法(類方法)的概念和使用、面向?qū)ο缶幊痰娜筇卣鹘榻B、面向?qū)ο缶幊?封裝、面向?qū)ο缶幊?繼承、面向?qū)ο缶幊?多態(tài)、訪問控制修飾符(public、protected、private)、方法重載(overload)、方法重寫(override)、方法重載(overload)和方法重寫(override)的比較、PHP魔術(shù)函數(shù)(__set __get __construct __destruct __call等)和魔術(shù)常量(__LINE__ , __FILE__ ,__FUNCTION__等)、抽象類(abstract class)的概念和使用接口(interface)的概念和使用、接口編程和繼承的區(qū)別、關(guān)鍵字final的使用、常量關(guān)鍵字const 的作用和使用注意事項、面向?qū)ο缶幊讨畯姶蟮姆瓷錂C制、面向?qū)ο缶幊讨畡討B(tài)代理。
面向?qū)ο缶幊桃呀?jīng)成為PHP編程的主流,面向?qū)ο缶幊套尦绦蜃兊酶訌姶蠛挽`活,更利于項目的開發(fā)和維護。關(guān)于面向?qū)ο缶幊?在 傳智播客 php視頻教程 61講-78講,看看什么才是真正的PHP面向?qū)ο笏枷?,什么是真正的OOP。
(5)錯誤處理和異常處理
錯誤處理的基本概念、PHP處理錯誤的三種方式介紹、使用die()進程錯誤處理、自定義錯誤和錯誤觸發(fā)器、錯誤日志、錯誤級別介紹、PHP異常處理的基本介紹、PHP異常處理(try throw catch)、自定義異常、如何設(shè)置頂級異常處理器、異常使用的規(guī)則。
在編寫php web 應(yīng)用程序時,錯誤處理是一個重要的部分。如果您的代碼缺少錯誤檢測編碼,那么程序看上去很不專業(yè),也為安全風(fēng)險敞開了大門。所以大家需要清楚在PHP編程中如何對錯誤和異常進行有效的處理,從而保證程序的安全和健壯。
(6)預(yù)定義超全局數(shù)組
預(yù)定義超全局數(shù)組-基本概念、$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILES、$_COOKIE、$_SESSION、$GLOBALS、$_GET 使用陷阱(sql注入和中文亂碼問題)
(7)cookie和session 什么是會話、cookie的基本概念、cookie的curd操作、cookie重要的api介紹、cookie運行原理圖解、cookie的實際運用(顯示用戶上次訪問時間、顯示用戶上次瀏覽過的商品、)、cookie使用的注意事項、session數(shù)據(jù)存放的位置和形式、session的curd操作、session運行原理圖解、session實際案例-在線購物車、IE禁用Cookie后的session處理方案、session防止用戶非法入侵、session配合驗證碼使用、php.ini 中關(guān)于cookie和session配置說明(重點,難點)、自定義會話處理器、Session和Cookie的區(qū)別。
Cookie(小甜餅)是客戶端技術(shù),服務(wù)器把每個用戶的數(shù)據(jù)以cookie的形式 寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時,就會帶著各自的數(shù)據(jù)去。Session是服務(wù)器端技術(shù),利用這個技術(shù),服務(wù)器在運行時可以為每一個用 戶的瀏覽器創(chuàng)建一個其獨享的session文件,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時,可以從用戶各自的session 中取出數(shù)據(jù)為用戶服務(wù)。Session和Cookie是最重要的用戶行為跟蹤技術(shù),尤其是電商,sns項目中運用廣泛,因此是我們學(xué)習(xí)的重點和難點,也是面試筆試的重點。關(guān)于cookie和session大家可以參考傳智播客 php視頻教程 114-121講
(8)PHP文件編程
文件及文件編程是什么、文件流的基本概念、文件的操作方式、PHP文件編程函數(shù)匯總介紹、最常用的13個文件函數(shù)、使用文件完成網(wǎng)站計數(shù)器、文件上傳下載操作-mini版音樂共享網(wǎng)、無限級文件掃描器。
文件最主要的作用就是保存數(shù)據(jù),它既可以保存一張圖片,也可以保存視頻 ,聲音...,本章節(jié)要求同學(xué)們掌握文件的各種操作和上傳下載,動態(tài)創(chuàng)建和刪除目錄,文件和無限級掃描文件等,掌握好這些知識點對我們項目開發(fā)非常重要。
(9)PHP繪圖技術(shù)
php繪圖坐標(biāo)系、繪圖步驟說明、繪圖快速入門、繪圖最常用的函數(shù)、繪圖技術(shù)的實際運用—人口分布餅狀統(tǒng)計圖、專業(yè)的報表開發(fā)--JpGraph、JpGraph的安裝和配置、JpGraph實際應(yīng)用-網(wǎng)民支持情況統(tǒng)計圖、JpGraph中文亂碼處理。如果你使用過財務(wù)軟件,那你一定看見過各種對財務(wù)數(shù)據(jù)進行統(tǒng)計和分析 的圖表,可能是表格,也可能是餅狀圖、柱狀圖、曲線圖..,簡單的說,就是使用圖表動態(tài)顯示數(shù)據(jù)。而這些圖表的顯 示都要使用到PHP的繪圖技術(shù),繪圖技術(shù)要求熟練的使用PHP的繪圖函數(shù)完成項目的需求。能開發(fā)一些統(tǒng)計圖,非常有實用價值。比如:
如何檢驗自己的學(xué)習(xí)效果,看看下面的一些面試題 , 看看能完成多少? 如果能正確完成80%,說明這個階段學(xué)到還不錯。
練習(xí)1: 簡述echo(),print(),print_r()的區(qū)別?
練習(xí)2: 說出PHP的超級全局變量數(shù)組,共九種
練習(xí)3: 如何在一個php函數(shù)中使用具有全局屬性的變量,說出兩種方式
練習(xí)4: 三個小題: 4.1.跳水比賽,8個評委打分。運動員的成績是8個成績?nèi)〉粢粋€最高分,去掉一個最低分,剩下的6個分數(shù)的平均分就是最后得分。使用一維數(shù)組實現(xiàn)打分功能。4.2.請把打最高分的評委和最低分的評委找出來。
4.3.找出最佳評委和最差評委。最佳評委就是打分和最后得分最接近的評委。最差評委就是打分和最后得分相差最大的。
練習(xí)5: include和require都能把另外一個文件包含到當(dāng)前文件中,他們有什么區(qū)別?Include和include_once又有什么區(qū)別?
練習(xí)6: 寫出一個能創(chuàng)建多級目錄的PHP函數(shù)
練習(xí)7: 寫出一個函數(shù),能遞歸列出某個目錄下的所有文件夾和文件名.練習(xí)8: 在防止SQL注入的時候,通、會把單引號、雙引號等轉(zhuǎn)義,需要用到哪個函數(shù)
練習(xí)9: 寫出插入排序法和快速排序法代碼
練習(xí)10: 二分查找的原理是什么? 請寫出二分查找函數(shù)
練習(xí)11: 寫出php的public、protected、private三種訪問控制模式的區(qū)別
練習(xí)12: 請寫出一個完整的嚴(yán)謹?shù)膯卫J?/p>
練習(xí)13: __set 和 __get 魔術(shù)函數(shù)是做什么的,在什么時候被觸發(fā)
練習(xí)14: 如何防止對象克隆, 對象克隆會復(fù)制 static屬性嗎?
練習(xí)15: 說說strip_tags的作用和用法?
練習(xí)16: 如果需要原樣輸出用戶輸入的內(nèi)容,在數(shù)據(jù)入庫前,要用哪個函數(shù)處理?
練習(xí)17: 如何控制多個進程去并發(fā)刪除,插入和更新數(shù)據(jù)庫的某張表?
練習(xí)18: PHP的安全模式和非安全模式的區(qū)別
第五篇:php學(xué)習(xí)經(jīng)驗
感覺要學(xué)好一門編程語言,關(guān)鍵要有對比,多看看別人的代碼,多寫代碼。
我的php是自學(xué)的,所以自學(xué)的角度來說。
一開始都是看書,在選書的過程中要根據(jù)自己的情況,沒有其他編程語言基礎(chǔ)的,或者只有大學(xué)那點C語言基礎(chǔ)的,都建議看國內(nèi)的作者寫的書,國外寫的一般涉及面較廣,相對難度較大,不太適合初學(xué)者。
這個過程,可以看視頻加快學(xué)習(xí)進度,推薦的入門視頻lamp兄弟連和php100的視頻。一定要經(jīng)常上機練手。多多加相關(guān)的qq群,去那些php技術(shù)的論壇,去看看他們具體談?wù)摰脑掝},看看自己薄弱之處。當(dāng)你看完一本,這種書的內(nèi)容的結(jié)尾一般都是用smarty或者zend framework做一個小項目,就不必在看書了(國內(nèi)的書都是一個套路,選一本最厚的看,其他的以后都不用再看了),可以先做一個功能齊全的新聞發(fā)布系統(tǒng),在實踐中鞏固書本的知識。
基本的語法和面向?qū)ο蟮膬?nèi)容看完之后。必須了解一下php的框架,建議初學(xué)者先看看thinkphp,比較簡單,之后再看看zend framework這類比較大的框架。這一步不需要精通而只要初步了解一下MVC和面向?qū)ο缶幊痰闹R,之后在學(xué)習(xí)中,不斷加深。
當(dāng)這些做完,你對做web開發(fā)有個大概印象時。就要看看別人成熟的產(chǎn)品,php的cms,像dede,ecshop,wordpress,joomla,drupal等,抓一個自己認為適合自己現(xiàn)階段最適合學(xué)的,也是視頻和書本輔助的,好像joomla,drupal都有實體書了。學(xué)習(xí)別人的cms,能讓學(xué)到很多技術(shù)和思想。但了解別人代碼的意思,這個過程是痛苦的,特別是對很多基礎(chǔ)不牢的,但這是必須的,和別人對比才能進步。php就是這樣,你沒有任何技巧都可以搭建出一個網(wǎng)站。但這樣的網(wǎng)站根本就不可作為商業(yè)用途。
之后,就要在工作崗位上提升自己,所以先要找一份工作崗位,現(xiàn)在php還是很熱門的(以后我不敢保證),這種工作挺好找的,只要你能做出一個像樣的新聞發(fā)布系統(tǒng),一般的小公司會要的,但是工資比較低,可能是一千來塊。要學(xué)好一門語言,都是要有相應(yīng)的工作經(jīng)驗的,不太可能是自己在家搗鼓搗鼓就能成為高手的。在工作中跟別人相互學(xué)習(xí),在工作不斷地解決問題,能讓你不斷進步。
在學(xué)習(xí)中一些問題也要加強,你可以看看招聘中他們所寫的要求比如緩存,靜態(tài)化等等,比較實用的東西,你是否掌握。還有php高手都是多面手,linux,mysql甚至其他語言都是精通的。