上期鏈接:開心學php100天 第一天 本期格言: 為什麼有的人學php總感覺有的知識點學的很好有的知識點卻始終學不會,那是因為學的時候臉部肌肉太緊張,導致神經末梢壞死,所以瘸了。 本期知識點:php數組 數組是php最為標志性的利器功能。學好php數組基本上你就有了在php界混的初期資本了。 以前我有一個朋友開了一個電腦公司。一般電腦公司主營業務就是賣電腦,偶爾也會搭一些零配件,當然視情況不同也有一些公司附帶著賣一些光盤,如電影、游戲等。我那朋友比較有技術氣息自己也是草根程序員出身,對賣光盤行為很鄙視尤其是賣島國的光盤。初期有一大段時間他的主營業務是幫一些公司或企業做網站。當時的宣傳性網站完全沒有現在的復雜,基本上就2-3個頁面,動態網站多一點也不會超過10個界面,何況當時有很多免費空間,所以當時他那幾百幾百賺很輕松、很敏捷、很高效啊,我曾“偷師”他的網站代碼,我記不清楚全部,只能yy一下大概的模樣,大家可以小看一下,php的: [php] view plaincopy <?php $var=file("./產品列表.txt");//當時用access還不如用 txt if(!$var || is_array($var) || count($var)==0) exit("系統繁忙,請稍後再試"); $fix=array("中國XXX最大的網站","只有我們的產品是正宗的","假一罰十絕不坑人","上哪能買到如此好的XXX不要再猶豫了"); ?> <html> <head> <title><?php echo $fix[0]?></a></title> </head> <body> <table style="width: 800px;"> //注意當時800*600是國標,不要想太多 <tr> <td style="background: .........;"> <?php echo $fix[0].'---------'.$fix[1] ?> </td> </tr> <tr> <td> ....這裡是亂七八糟的 假大空神句 ....... </td> </tr><br> <br> <tr> <td> ....這裡是同類網站各自<strong>互相支持</strong>穿插的廣告,如:“激起你心中的虎”或“用了XXX後腿腳好了,也不起夜了”等等。 </td> </tr> ? <tr> <br> <td> <?php foreach($var as $eachline) <br> echo '<li><a href="這裡是商品詳細頁的鏈接">'.$eachline.'</a></li>'; <br>//商品標題很聳聽,意思是不買 你會後悔白來世上一趟 ?> </td> </tr> <tr> <td> ........注意這裡已然是頁面的尾部了.......... //注意當時 備案 真的不嚴 <?php echo $fix[2].$fix[3] ?> <?php echo date('Y-m-d H:i:s');?> //注意當時我朋友不會腳本,因此該頁面要刷一次才會變化當前時間。 </td> </tr> </table> </body> </html> 好,以上就是我朋友賴以生存的一個基本技能。據說換個同類型的客戶他只要把“產品列表.txt” 換換內容,然後把td的背景圖片換掉,頁面立馬洗新革面,我朋友當時非常 嚴肅的告訴我,他已經實現“產品化”的開發模式了。我膜拜的五體投地,因為我當時初學asp時,絕對沒有這麼“可配置化”。 網頁裡面的廣告和語句大家不要太糾結,反正當時作為小白的我看了這個網頁,很想花錢試一試,不過我朋友告訴我我還沒到用的時候。我追問“什麼時候能用”,我朋友“扇”了我一巴掌。 接下來我們切入正題,解釋一下上文中的知識點。 一、數組最基本的表現形式 $fix=array("內容1","內容2","內容3");這個是php數組最基本的表現方式。請原諒我不想把廣告詞再打一遍,太惡心了。 你想堆積多少內容均可,只要你寫的下。當你要調用裡面的內容時,你只要從“0”開始計數進行調用,如$fix[0],$fix[1]...$fix[n]。 注意:為什麼要從0開始。一個是因為"php老大"就是這麼設計的,另外一個是因為 這個最最基本數組的真身是 $fix=array(0=>"內容1",1=>"內容2",2=>"內容3“); "=>"這個符號是被省略了,這個符號 左邊是 鍵,右邊是值,一般很多教科書上 會解釋成 "$key=>$value".大家不要糾結為什麼左邊是$key右邊是$value,我告訴大家是習慣性寫法,你要寫成 $ss=>$bb,都代表左邊那個是鍵,右邊那個是值。 所以:任何一個形式的數組 都會有鍵和值。省不省略看你的,不管你省不省,反正我省了。 拓展一下:既然有鍵值,那麼就可以更改鍵值。 譬如 $fix=array("誇張的網站名稱"=>"中國最大的XXX網站 ","扯蛋的產品品牌"=>"只有我們是最正宗的","聽了想吐的廣告語"=>"假一罰十絕不坑人"); 這個時候假如你要把 "扯蛋的產品品牌" 輸出到頁面,你就不能用 echo $fix[1]; 因為鍵值 已經被你改了。 應該用 echo $fix['扯蛋的產品品牌']; 二、遍歷數組 繼續以 $fix=array("內容1","內容2","內容3"); 為例子 1、用foreach是循環小型數組最貼身最適合的方法。 基本語法是:foreach(這裡是原始數組 as 這裡寫每次遍歷時設置的變量) 例如:foreach($var as $eachline) echo $eachline; 則會以此輸出 內容1.....內容3; 2、很多人知道其實還有一個 while 可以遍歷數組 基本語法是:while(list($key,$value)=each($attr)) 例如:while(list($key,$value)=each($fix)) echo $key.$value; 則會依次輸出 0內容1.。。。。2內容2; 這兩種遍歷區別這裡不講的太深,後面會講到,我現在只告訴大家,如果你只是要遍歷數據,那麼不管啥時候都用foreach。如果你要在遍歷過程中還要更改數組的值,那麼用while。原因只有一個字,為了"快“。現在生活節奏太快,寫程序首要原則是”快“。 至於其他遍歷數組的語法還有,我個人認為咱沒必要學了,除非你去考秀才,如果是實戰 這兩種夠了,我們也是為了快。 拓展一下,數組裡面的值不光可以放字符串,也可以放數組也可以任何形式的變量值. 如 $fix=array("扯蛋的廣告詞"=>array("前100位訂購者,再送200元大禮包","20天精通某語言","孩子不吃飯是因為缺X")); 對於這樣的數組,$fix['扯蛋的廣告詞'] 的值其實是個數組、 譬如 echo $fix['扯蛋的廣告詞'][1]; 則會輸出 "20天精通某語言" 三、數組的賦值 來舉個例子: $fix=array(); 這個數組是空的。 $fix[]="內容1”; 此時就等同於 $fix=array("內容1");或者$fix=array(0=>"內容1"); $fix[]="內容2";此時等同於 $fix=array("內容1","內容2"); 或者 $fix=array(0=>"內容1",1=>"內容2"); $fix['我們在學什麼']='php'; 此時等同於 $fix=array(0=>"內容1","我們在學什麼"=>"php"); 以上賦值都是在數組的尾部賦值,其實還有array_push函數可以賦值,語法是$fix=array_push($fix,"內容1","內容2");效果是一樣的,只不過array_push可以一下子加好多值,用'[]'一次一個。 php數組函數很強大,幾乎想干什麼都能干到,譬如數組的排序、合並、反轉、刪除等等,大家可以百度一下,由於篇幅問題這裡不多講,函數靠背、靠多用就會,不難。不過呢,到了實戰做項目 很多數據的處理都需要通過數據庫存儲過程、優化的表結構、好的數據排序算法、技巧化的數據讀取方式來做,真正實戰php裡面好多數組的函數基本上是用不到的,譬如你接到了一個1230X這樣的項目,要列出所有國人的名字並排序你敢用php數組來遍歷著干並且合並、反轉嗎。當然假如你的客戶是面向梵蒂岡或者冰島的那可以這麼干。 不過很多函數譬如, is_array--是否是數組 in_array---是否存在某值,array_key_exists---數組中是否存在某鍵值等等常用的函數是一定要學會的。如學不會,那你離做領導也不遠了。 彩蛋: 上文中有個 $var=file("./產品列表.txt"); 意思是把文本文檔一次性讀取,並且按照行讀取成數組,其中包括換行符。