[開心學php100天]第二天:瘋狂的數組

來源:互聯網
上載者:User

 上期連結:開心學php100天
第一天

本期格言:

  為什麼有的人學php總感覺有的知識點學的很好有的知識點卻始終學不會,那是因為學的時候臉部肌肉太緊張,導致神經末梢壞死,所以瘸了。

 本期知識點:php數組

   數組是php最為標誌性的利器功能。學好php數組基本上你就有了在php界混的初期資本了。

   以前我有一個朋友開了一個電腦公司。一般電腦公司主營業務就是賣電腦,偶爾也會搭一些零配件,當然視情況不同也有一些公司附帶著賣一些光碟片,如電影、遊戲等。我那朋友比較有技術氣息自己也是草根程式員出身,對賣光碟片行為很鄙視尤其是賣島國的光碟片。初期有一大段時間他的主營業務是幫一些公司或企業做網站。當時的宣傳性網站完全沒有現在的複雜,基本上就2-3個頁面,動態網站多一點也不會超過10個介面,何況當時有很多免費空間,所以當時他那幾百幾百賺很輕鬆、很敏捷、很高效啊,我曾“偷師”他的網站代碼,我記不清楚全部,只能yy一下大概的模樣,大家可以小看一下,php的:

 
 

<?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");  意思是把文字文件一次性讀取,並且按照行讀取成數組,其中包括分行符號。

    下一天 講php偉岸的檔案操作,請大家預熱。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.