亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP的十個高級技巧(中)

2019-09-08 23:11:12
字體:
來源:轉載
供稿:網友
三、文件是我們的朋友

  無論你在開發的網站規模的大小,都應該意識到代碼重用的重要性,無論這些代碼是HTML、還是PHP代碼。例如,你必須至少每年改變一次包含版權信息的頁腳,如果你的網站含有1000個頁面,每年修改一次也是個很煩人的事兒。

  在PHP中,至少有幾個函數可以幫助你實現代碼重用的目的,所使用的函數取決于你所重用的代碼,主要的函數有:

  * include() and include_once()
  * require() and require_once()
  include()函數包含并對給定的文件進行計算,例如:
  include('/home/me/myfile');

  在include文件中的任何代碼都在include()出現的代碼范圍內執行,你可以通過聯合使用include()和fopen()在自己的服務器上包含靜態文件,在另一臺服務器上包含目標文件。

  include_once()的功能與include()相同,二者之間的區別在于它會檢查一個文件中的代碼是否已經包含在現有的腳本中,如果代碼已經存在,則不會再次包含它。

   require()函數用給定文件的內容取代它本身,這一代替過程發生在PHP引擎編譯代碼期間,而不是在執行期間進行,它不象include()那樣會首先進行計算。require()函數更多地用在靜態元素中,而include()更多地用于動態元素中。與include_once()類似的是,require_once()將首先檢查是否已經插入給定的代碼,如果代碼已經存在,就不再插入了。

  為也了解其內容,在版權信息、靜態文字和其他不包含變量的元素或者依賴其他正在執行的腳本的元素中我更趨向于使用require函數。例如:

  <HTML>
  <HEAD><TITLE>Something</TITLE></HEAD>
  <BODY>
  [a lot of content]
  <?
  // insert copyright
  require('/home/me/mycopyright');
  ?>
  </BODY>
  </HTML>

  另一方面,我經常在文件的開始使用include()來控制許多的函數:

  <?
  //得到函數庫
  include('/home/me/myfunctions');
  // do PHP things with my functions ?>
  <HTML>
  <HEAD><TITLE>Something</TITLE></HEAD>
  <BODY>
  [a lot of content]
  </BODY>
  </HTML>

  下一個問題就該是“include和require文件在哪里?”,對這個問題簡單的回答是,“系統中的任意地方?!比绻愕拇a中包含有帶有用戶名和口令的數據庫連接,你肯定不會將它們都放在文檔根目錄中向所有的人都開放。

  included或required文件可以在系統上的任何地方,只要PHP運行的系統上的用戶可以訪問這些文件即可,你可以使這些文件具有任何后綴,或者不使用后綴。

  使用include()和require()對在網站中的元素進行具體化是一種普遍的現象,并在需要對網站升級時,給你帶來很大的方便。

四、PHP和文件系統的維護

  PHP中有許多與文件系統有關的函數,這些函數不僅可以打開文件,還可以顯示目錄中的內容、移動文件和其他一些功能,許多人甚至用PHP開發基于互聯網的文件資源管理器。

  關于文件路徑的解釋:在Windows中,可以在路徑中使用/和符號,而在其他的操作系統中只能使用/符號。出于一致性的緣故,我們統一使用/符號。

  下面的腳本樣例可以顯示一個目錄清單,注釋已經包含在代碼中:

  <? /*把要讀取的目錄的全路徑名存入一個名字為$dir_name的變量中。 */
  $dir_name = "/home/me/";
  /* 創建一個句柄,其值是打開一個給定目錄的結果*/
  $dir = opendir($dir_name);
  /* 建立一個文字塊,用以放置列表元素(文件名字)*/
  $file_list = "<ul>";
  /* 使用一個while語句,讀取已經打開的目錄中的所有元素,如果文件的名字不是“.”或“..”,則顯示列表中的名字*/
  while ($file_name = readdir($dir)) {
  if (($file_name != ".") && ($file_name != "..")) {
  $file_list .= "<li>$file_name";
  }
  }
  $file_list .= "</ul>";
  /*關閉打開的目錄,結束PHP模塊*/
  closedir($dir);
  ?>
  <!-- Start your HTML -->
  <HTML>
  <HEAD>
  <TITLE>Directory Listing</TITLE>
  </HEAD>
  <BODY>
  <!-- Use PHP to print the name of the directory you read -->
  <P>Files in: <? echo "$dir_name"; ?></p>
  <!-- Use PHP to print the directory listing -->
  <? echo "$file_list"; ?>
  </BODY>
  </HTML>

  好了,我們已經得到了一個目錄清單。需要注意的是,要讀取一個文件(稍后我們將進行講解)或目錄的內容,PHP運行的系統上的用戶必須至少有讀取文件的權限。
  下面是一個如何拷貝文件的例子:

  <? /*把你要拷貝的原文件的全路徑賦給一個名字為$original的變量中,把拷貝的文件的全路徑賦予一個名字為$copied的變量中*/
  $original = "/home/me/mydatabasedump";
  $copied = "/archive/mydatabasedumo_1010";
  /* 使用copy()函數拷貝原始文件,如果拷貝沒有完成則會顯示一個錯誤信息*/
  @copy($original, $copied) or die("Couldn't copy file.");
  ?>

  這個例子是一個文件備份系統的原型。在這段腳本運行時,它把文件拷貝到一個不同的位置進行保存。稍微修改一下守護程序,就可以在一天中你指定的時刻執行它,而無需用戶的干預。

  假定你在系統上安裝了Lynx,可以創建一個守護程序的條目訪問這個文件,訪問這個文件會運行這個腳本并建立一個拷貝文件,下面的例子將在上午5點鐘運行這個腳本,然后關閉Lynx:
  0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
  如果運行的是CGI版本的PHP,可以跳過Lynx部分,而直接調用二進制文件:
  0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1

五、豐富的數組函數

  PHP 4.0中新添加了30個與組數有關的函數,其中一些常見的函數可以判斷一個數組中是否包含某個元素,對一個數組中的元素進行計數,添加或刪除數組中的元素或者對數組中的元素進行排序。

  如果有一個很大的數組,而你需要找出其中是否包含一個特定的元素,就可以使用in_array()。下面的例子將顯示“Not found in this array”,因為在一個名字為$namesArray的數組中查找Albert,而在$namesArray數組中不存在這樣一個元素。

  <? $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的值改為Mary,就會得到“You've found it!”的信息,因為Mary是$namesArray數組中的一個元素。

  如果要對一個數組中的元素個數進行計數,只要簡單地使用count()函數即可:

  <? $namesArray = array("Joe", "Jane", "Bob", "Mary", "Paul", "Eddie", "John");
  $count = count($namesArray); ?>

  返回的$count的值為7。

  可以在一個數組的開頭或結尾處添加元素,還可以使用array_merge()來建立一個包含二個或更多數組中元素的新數組,合并時,元素的順序會按指定的順序排列,如果原來的數組是被排過序的,在合并后需要對它重新排序。

  我們可以首先利用array_push()在數組的結尾處添加一個元素:

  <? /* 建立一個數組 */
  $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
  /* 向數組中添加元素 */
  array_push($fruitArray, "grape", "pineapple", "tomato");
  /*顯示每個元素及其序號*/
  while (list($key,$value) = each($fruitArray)) {
  echo "$key : $value<br>";
  }
  ?>

  運行上面的程序將得到下面的結果:
  0 : apple
  1 : orange
  2 : banana
  3 : kiwi
  4 : pear
  5 : grape
  6 : pineapple
  7 : tomato

  如果需要在數組的開頭添加元素,其代碼與上面的代碼差不多,唯一的不同之處是需要用array_unshift()代替array_push()。

  <?
  /* 建立一個數組*/
  $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
  /* 向數組中添加元素*/
  array_unshift($fruitArray, "grape", "pineapple", "tomato");
  /* 顯示每個元素及其序號*/
  while (list($key,$value) = each($fruitArray)) {
  echo "$key : $value<br>";
  }
  ?>
  運行上面的程序將得到下面的結果:

  0 : grape
  1 : pineapple
  2 : tomato
  3 : apple
  4 : orange
  5 : banana
  6 : kiwi
  7 : pear
  array_merge()函數可以把二個或更多的數組合并為一個數組。

  <? /*建立第一個數組*/
  $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
  /*/建立第二個數組*/
  $vegArray = array("carrot", "green beans", "asparagus", "artichoke", "corn");
  /*把這二個數組合并為一個數組*/
  $goodfoodArray = array_merge($fruitArray, $vegArray);
  /* 顯示每個元素及其序號*/
  while (list($key,$value) = each($goodfoodArray)) {
  echo "$key : $value<br>";
  }
  ?>

  運行上面的腳本將得到下面的結果:

  0 : apple
  1 : orange
  2 : banana
  3 : kiwi
  4 : pear
  5 : carrot
  6 : green beans
  7 : asparagus
  8 : artichoke
  9 : corn

  現在我們已經掌握了如何添加元素和合并數組,我們再來看看如何從一個數組中刪除元素。從一個數組的末尾刪除一個元素可以使用array_pop()函數,使用array_shift()函數可以從一個數組的開頭刪除一個元素。盡管使用array_pop()或 array_shift()從數組中刪除了一個元素,你還可以把這個元素當作一個變量來使用。

  使用array_pop()從一個數組的末尾刪除一個元素:
  <?
  /*建立一個數組*/
  $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
  /* 從數組的末尾刪除一個元素*/
  $popped = array_pop($fruitArray);
  /* 顯示刪除后數組的內容和你刪除的元素*/
  while (list($key,$value) = each($fruitArray)) {
  echo "$key : $value<br>";
  }
  echo "<br>and finally, in $popped: $popped";
  ?>

  運行上面的腳本會得到下面的結果:
  0 : apple
  1 : orange
  2 : banana
  3 : kiwi
  and finally, in $popped: pear

  我們再來討論一個從一個數組的末尾刪除元素的例子:

  <?
  /* 建立一個數組*/
  $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
  /*從一個數組的開始刪除一個元素*/
  $shifted = array_shift($fruitArray);
  /* 顯示刪除后數組的內容和你刪除的元素*/
  while (list($key,$value) = each($fruitArray)) {
  echo "$key : $value<br>";
  }
  echo "<br>and finally, in $shifted: $shifted";
  ?>

  運行上述腳本會得到如下的顯示結果:
  0 : orange
  1 : banana
  2 : kiwi
  3 : pear
  and finally, in $shifted: apple

  另外還有幾個函數可以對數組中的元素進行排序,但在這里我們將只簡要介紹基本的排序函數,說明排序的過程:

  <? /*建立一個數組*/
  $fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
  /* 對數組進行排序*/
  sort($fruitArray);
  /*顯示每個元素及其序號*/
  while (list($key,$value) = each($fruitArray)) {
  echo "$key : $value<br>";
  }
  ?>

  運行上述的腳本會得到如下的顯示結果:

  0 : apple
  1 : banana
  2 : kiwi
  3 : orange
  4 : pear
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄色av女优在线观看| 2019中文字幕免费视频| 国产精品91久久久| 国产中文日韩欧美| 综合激情国产一区| 91精品在线一区| 欧美福利视频在线观看| 亚洲视频axxx| 欧美激情免费视频| 精品激情国产视频| 最近更新的2019中文字幕| 欧洲亚洲在线视频| 91精品国产99久久久久久| 午夜免费在线观看精品视频| 国产成人极品视频| 日韩视频在线免费| 久久国产精品免费视频| 欧美日韩xxx| 日本欧美在线视频| 尤物yw午夜国产精品视频| 欧美孕妇与黑人孕交| 亚洲国产精品久久久久| 成人深夜直播免费观看| 97色伦亚洲国产| 狠狠色香婷婷久久亚洲精品| 日韩中文字幕在线看| 亚洲一区二区免费在线| 亚洲白拍色综合图区| 久久99久久99精品免观看粉嫩| 国产91精品久| 国内精品一区二区三区四区| 性欧美激情精品| 亚洲国产日韩精品在线| 久久久精品免费| 日韩中文字幕第一页| 国产91九色视频| 成人网中文字幕| 2019精品视频| 国产丝袜一区二区三区| 欧美成人精品在线视频| 亚洲精品二三区| 欧美最顶级丰满的aⅴ艳星| 国产成人精彩在线视频九色| 青草成人免费视频| 精品久久久久人成| 欧美中文在线免费| 麻豆乱码国产一区二区三区| 91嫩草在线视频| 久久综合九色九九| 热久久免费视频精品| 全球成人中文在线| 精品久久久久久久久久久久久久| 欧美巨猛xxxx猛交黑人97人| 国产有码在线一区二区视频| 日韩av在线网址| 亚州成人av在线| 97精品一区二区视频在线观看| 亚洲色图美腿丝袜| 九九热精品在线| 亚洲人av在线影院| 91系列在线观看| 国产成人jvid在线播放| 亚洲电影免费观看高清完整版| 欧美日韩国产页| 久久韩国免费视频| 国产精品黄视频| 亚洲国产精品久久久| 久久天天躁狠狠躁夜夜躁| 日韩av免费在线看| 亚洲另类xxxx| 久久久精品国产亚洲| 亚洲国产欧美一区二区丝袜黑人| 国产xxx69麻豆国语对白| 一本大道久久加勒比香蕉| 黑人精品xxx一区| 成人免费淫片aa视频免费| 亚洲国产精彩中文乱码av在线播放| 色婷婷av一区二区三区在线观看| 国产精品视频免费在线| 97国产精品视频人人做人人爱| 日韩一区二区三区国产| 国产视频福利一区| 最近中文字幕mv在线一区二区三区四区| 欧美成人高清视频| 日韩经典中文字幕在线观看| 久久国产精品偷| 欧美一区二粉嫩精品国产一线天| 中文字幕精品在线视频| 在线视频日韩精品| 亚洲第一色在线| 欧美日本国产在线| 九九精品视频在线| 久久6免费高清热精品| 日韩精品在线免费播放| 亚洲国产一区二区三区四区| 亚洲福利在线观看| 91久久久久久| 欧美大学生性色视频| 欧美精品在线播放| 日韩欧美亚洲一二三区| 亚洲免费视频在线观看| 国产欧美日韩专区发布| 久久777国产线看观看精品| 在线日韩第一页| 国产色婷婷国产综合在线理论片a| 欧美日韩一区二区在线| 国产精品影片在线观看| 久久九九国产精品怡红院| 91美女片黄在线观| 国产成人综合亚洲| 日韩中文字幕免费看| 亚洲第一免费网站| 国产精品久久久久久一区二区| 美女视频黄免费的亚洲男人天堂| 97视频在线观看网址| 国产手机视频精品| 亚洲欧美制服另类日韩| 亚洲视频一区二区三区| 91精品国产自产在线观看永久| 久久久久久美女| 久久av在线播放| 国产精品久久久久一区二区| 俺也去精品视频在线观看| 亚洲自拍偷拍区| 欧美日韩精品在线视频| 欧美成人性色生活仑片| 欧美性生交xxxxxdddd| 日韩欧美高清在线视频| 久久久久久久一| 不卡av在线播放| 欧美另类69精品久久久久9999| 午夜精品久久久久久99热| 国产在线视频不卡| 久久久久久尹人网香蕉| 蜜臀久久99精品久久久久久宅男| 亚洲天堂精品在线| 亚洲国产欧美一区二区丝袜黑人| 欧美国产日韩一区二区三区| 最近2019免费中文字幕视频三| 国产精品人成电影在线观看| 国产在线观看一区二区三区| 日本精品一区二区三区在线播放视频| 91精品国产91久久久久久吃药| 国产小视频91| 97香蕉超级碰碰久久免费的优势| 欧美成人激情视频免费观看| 日韩中文字幕在线播放| 亚洲一区二区在线播放| 久久91亚洲人成电影网站| 成人a视频在线观看| 日韩免费黄色av| 日韩视频永久免费观看| 久久精品国产2020观看福利| 日韩欧美国产网站| 久久久久久网站| 成人免费视频网| 日韩美女视频免费看| 久久久久久免费精品| 欧美日韩国产123| 国产精品久久一区主播| 亚洲男人天堂九九视频| 久久欧美在线电影| 国精产品一区一区三区有限在线| 亚洲色图激情小说|