程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 九個PHP很有用的功能

九個PHP很有用的功能

編輯:關於PHP編程

  1. 函數的任意數目的參數

  你可能知道PHP允許你定義一個默認參數的函數。但你可能並不知道PHP還允許你定義一個完全任意的參數的函數

  下面是一個示例向你展示了默認參數的函數:

  // 兩個默認參數的函數

  function foo($arg1 = , $arg2 = ) {

  echo "arg1: $arg1 ";

  echo "arg2: $arg2 ";

  }

  foo(hello,world);

  /* 輸出:

  arg1: hello

  arg2: world

  */

  foo();

  /* 輸出:

  arg1:

  arg2:

  */ 

 

  現在我們來看一看一個不定參數的函數,其使用到了?func_get_args()方法:

  // 是的,形參列表為空

  function foo() {

  // 取得所有的傳入參數的數組

  $args = func_get_args();

  foreach ($args as $k => $v) {

  echo "arg".($k+1).": $v ";

  }

  }

  foo();

  /* 什麼也不會輸出 */

  foo(hello);

  /* 輸出

  arg1: hello

  */

  foo(hello, world, again);

  /* 輸出

  arg1: hello

  arg2: world

  arg3: again

  */ 

 

  2. 使用 Glob() 查找文件

  很多PHP的函數都有一個比較長的自解釋的函數名,但是,當你看到?glob() 的時候,你可能並不知道這個函數是用來干什麼的,除非你對它已經很熟悉了。

  你可以認為這個函數就好?scandir() 一樣,其可以用來查找文件。

  // 取得所有的後綴為PHP的文件

  $files = glob(*.php);

  print_r($files);

  /* 輸出:

  Array

  (

  [0] => phptest.php

  [1] => pi.php

  [2] => post_output.php

  [3] => test.php

  )

  */ 

 

  你還可以查找多種後綴名

  // 取PHP文件和TXT文件

  $files = glob(*.{php,txt}, GLOB_BRACE);

  print_r($files);

  /* 輸出:

  Array

  (

  [0] => phptest.php

  [1] => pi.php

  [2] => post_output.php

  [3] => test.php

  [4] => log.txt

  [5] => test.txt

  )

  */

  你還可以加上路徑:

  $files = glob(../images/a*.jpg);

  print_r($files);

  /* 輸出:

  Array

  (

  [0] => ../images/apple.jpg

  [1] => ../images/art.jpg

  )

  */ 

 

  如果你想得到絕對路徑,你可以調用?realpath() 函數:

  $files = glob(../images/a*.jpg);

  // applies the function to each array element

  $files = array_map(realpath,$files);

  print_r($files);

  /* output looks like:

  Array

  (

  [0] => C:wampwwwimagesapple.jpg

  [1] => C:wampwwwimagesart.jpg

  )

  */ 

 

  3. 內存使用信息

  觀察你程序的內存使用能夠讓你更好的優化你的代碼。

  PHP 是有垃圾回收機制的,而且有一套很復雜的內存管理機制。你可以知道你的腳本所使用的內存情況。要知道當前內存使用情況,你可以使用?memory_get_usage() 函數,如果你想知道使用內存的峰值,你可以調用memory_get_peak_usage() 函數。

  echo "Initial: ".memory_get_usage()." bytes ";

  /* 輸出

  Initial: 361400 bytes

  */

  // 使用內存

  for ($i = 0; $i < 100000; $i++) {

  $array []= md5($i);

  }

  // 刪除一半的內存

  for ($i = 0; $i < 100000; $i++) {

  unset($array[$i]);

  }

  echo "Final: ".memory_get_usage()." bytes ";

  /* prints

  Final: 885912 bytes

  */

  echo "Peak: ".memory_get_peak_usage()." bytes ";

  /* 輸出峰值

  Peak: 13687072 bytes

  */ 

 

  4. CPU使用信息

  使用?getrusage() 函數可以讓你知道CPU的使用情況。注意,這個功能在Windows下不可用。

  print_r(getrusage());

  /* 輸出

  Array

  (

  [ru_oublock] => 0

  [ru_inblock] => 0

  [ru_msgsnd] => 2

  [ru_msgrcv] => 3

  [ru_maxrss] => 12692

  [ru_ixrss] => 764

  [ru_idrss] => 3864

  [ru_minflt] => 94

  [ru_majflt] => 0

  [ru_nsignals] => 1

  [ru_nvcsw] => 67

  [ru_nivcsw] => 4

  [ru_nswap] => 0

  [ru_utime.tv_usec] => 0

  [ru_utime.tv_sec] => 0

  [ru_stime.tv_usec] => 6269

  [ru_stime.tv_sec] => 0

  )

  */ 

 

  這個結構看上出很晦澀,除非你對CPU很了解。下面一些解釋:

  ru_oublock: 塊輸出操作

  ru_inblock: 塊輸入操作

  ru_msgsnd: 發送的message

  ru_msgrcv: 收到的message

  ru_maxrss: 最大駐留集大小

  ru_ixrss: 全部共享內存大小

  ru_idrss:全部非共享內存大小

  ru_minflt: 頁回收

  ru_majflt: 頁失效

  ru_nsignals: 收到的信號

  ru_nvcsw: 主動上下文切換

  ru_nivcsw: 被動上下文切換

  ru_nswap: 交換區

  ru_utime.tv_usec: 用戶態時間 (microseconds)

  ru_utime.tv_sec: 用戶態時間(seconds)

  ru_stime.tv_usec: 系統內核時間 (microseconds)

  ru_stime.tv_sec: 系統內核時間?(seconds) 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved