28 123
發新話題

[分享] 《PHP》『雜項函式庫』

《PHP》『雜項函式庫』

《PHP》『雜項函式庫』create_function --- 建立匿名函式

create_function

(PHP4 >= 4.0.1)

create_function ---  建立匿名函式

語法 : string create_function (string args, string code)

說明 :

從傳遞的參數建立一個匿名的函式,並且傳回一個獨一無二的名稱。通常參數args將會傳遞成一個單引號字串,而參數code也是如此,使用單引號字串的理由是為了要從剖析中來保護變數名稱,否則,如果你使用雙引號的話,就必須要逃脫變數名稱,例如 : \$avar。

你可以使用這個函式,從執行時收集到的資訊來建立一個函式。

Example :

<?php

    $newfunc = create_function('$a,$b','return "ln($a) + ln($b) = ".log($a * $b);');

    echo "New anonymous function: $newfunc\n";

    echo $newfunc(2,M_E)."\n";

    // outputs

    // New anonymous function: lambda_1

    // ln(2) + ln(2.718281828459) = 1.6931471805599

?>

或者是擁有處理者(handler)函式,這可以請求一個運作的設定到一個參數的列表。

Example :

<?php

   function process($var1, $var2, $farr) {

                for ($f=0; $f < count($farr); $f++)

                            echo $farr[$f]($var1,$var2)."\n";

   }

   // create a bunch of math functions

   $f1 = 'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return false;}';

   $f2 = "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);";

   $f3 = 'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b;} else {return false;}';

   $farr = array(

                        create_function('$x,$y', 'return "some trig: ".(sin($x) + $x*cos($y));'),

                        create_function('$x,$y', 'return "a hypotenuse: ".sqrt($x*$x + $y*$y);'),

                        create_function('$a,$b', $f1), create_function('$a,$b', $f2),

                        create_function('$a,$b', $f3)

                        );

    echo "\nUsing the first array of anonymous functions\n";

    echo "parameters: 2.3445, M_PI\n";

    process(2.3445, M_PI, $farr);

    // now make a bunch of string processing functions

    $garr = array(

                        create_function('$b,$a','if (strncmp($a,$b,3) == 0) return "** \"$a\" '.

                                          'and \"$b\"\n** Look the same to me! (looking at the first 3 chars)";'),

                        create_function('$a,$b','; return "CRCs: ".crc32($a)." , ".crc32(b);'),

                        create_function('$a,$b','; return "similar(a,b) = ".similar_text($a,$b,&$p)."($p%)";')

                        );

     echo "\nUsing the second array of anonymous functions\n";

     process("Twas brilling and the slithy toves", "Twas the night", $garr);

?>

當你執行上面的範例時,輸出將會是 :

Using the first array of anonymous functions

parameters: 2.3445, M_PI

some trig: -1.6291725057799

a hypotenuse: 3.9199852871011

b*a^2 = 4.8103313314525

min(b^2+a, a^2,b) = 8.6382729035898

ln(a/b) = 0.27122299212594

Using the second array of anonymous functions

** "Twas the night" and "Twas brilling and the slithy toves"

** Look the same to me! (looking at the first 3 chars)

CRCs: -725381282 , 1908338681

similar(a,b) = 11(45.833333333333%)

匿名函式常見的使用是用來建立callback函式,例如 : 當使用array_walk( )或usort( )時 :

<?php

   $av = array("the ","a ","that ","this ");

   array_walk($av, create_function('&$v,$k','$v = $v."mango";'));

   print_r($av);     // for PHP3 use var_dump( )

   // outputs:

   // Array

   // (

   //       [0] => the mango

   //       [1] => a mango

   //       [2] => that mango

   //       [3] => this mango

   // )

   // an array of strings ordered from shorter to longer

  $sv = array("small","larger","a big string","it is a string thing");

  print_r($sv);

  // outputs:

  // Array

  // (

  //        [0] => small

  //        [1] => larger

  //        [2] => a big string

  //        [3] => it is a string thing

  // )

  // sort it from longer to shorter

  usort($sv, create_function('$a,$b','return strlen($b) - strlen($a);'));

  print_r($sv);

  // outputs:

  // Array

  // (

  //        [0] => it is a string thing

  //        [1] => a big string

  //        [2] => larger

  //        [3] => small

  //  )

?>



[ 本帖最後由 蔡逸竹 於 2006-9-24 12:42 編輯 ]

TOP

《PHP》『雜項函式庫』connection_aborted --- 如果與用戶端失去連線則傳回true

connection_aborted

(PHP3 >= 3.0.7 , PHP4 >= 4.0b4)

connection_aborted ---  如果與用戶端失去連線則傳回true

語法 : int connection_aborted (void )

說明 :

如果與用戶端(client)失去連線則傳回true。

TOP

《PHP》『雜項函式庫』connection_status --- 傳回連線狀態

connection_status

(PHP3 >= 3.0.7 , PHP4 >= 4.0b4)

connection_status ---  傳回連線狀態

語法 : int connection_status (void )

說明 :

傳回連線狀態。

TOP

《PHP》『雜項函式庫』connection_timeout --- 如果超過限定的執行時間則傳回true

connection_timeout

(PHP3 >= 3.0.7 , PHP4 >= 4.0b4)

connection_timeout ---  如果超過限定的執行時間則傳回true

語法 : int connection_timeout (void )

說明 :

如果PHP程式在執行時超過所限定的時間,則此函式傳回true。

TOP

《PHP》『雜項函式庫』define --- 定義常數名稱

define

(PHP3 , PHP4)

define ---  定義常數名稱

語法 : int define (string name, mixed value [, int case_insensitive])

說明 :

定義一常數名稱,類似於變數,不同處在於:

常數的前面沒有錢($)的符號
常數可在任何地方存取,不需考慮變數範圍規則
常數一旦設定後就不需再下定義
常數可以只求數量的值
參數name是常數的名稱,value是常數的值。

如果把第三個參數case_insensitive設為1,則常數將會定義成不區分大小寫。預設上是區分大小寫的,例如 : CONSTANT和Constant代表著不同的值。

Example :

<?php

    define ("CONSTANT", "Hello world.");

    echo CONSTANT; // outputs "Hello world."

?>

define( )成功則傳回TRUE,如果發生錯誤則傳回FALSE。

參考 : defined( )

TOP

《PHP》『雜項函式庫』defined --- 檢查常數是否存在

defined

(PHP3 , PHP4)

defined ---  檢查常數是否存在

語法 : int defined (string name)

說明 :

如果常數名稱name已經定義了則傳回true,否則傳回false。

參考 : define( )

TOP

《PHP》『雜項函式庫』die --- 輸出訊息並且終止程式的剖析

die

(unknown)

die ---  輸出訊息並且終止程式的剖析

語法 : void die (string message)

說明 :

這個語言建造輸出一個訊息並且終止程式的剖析,它不會傳回任何東西。

Example :

<?php

   $filename = '/path/to/data-file';

   $file = fopen ($filename, 'r') or die("unable to open file ($filename)");

?>

參考 : exit( )

TOP

《PHP》『雜項函式庫』eval --- 求出字串PHP程式碼的值

eval

(unknown)

eval ---  求出字串PHP程式碼的值

語法 : mixed eval (string code_str)

說明 :

eval( )求出字串參數 code_str PHP程式碼的值,除此之外,還可以用來將程式碼儲存在資料庫文字欄位中給後來的程式執行。

使用eval( )時有些要素必須要記得,傳遞給函式的參數必須是有效的PHP程式碼,包括程式終止說明的分號(;),這樣一來才不會出現錯誤,並且要適當的逃脫參數code_str中的東西。

在eval( )中給予的變數值,將會保留這些值在後來的程式中。

return的說明,將會立刻的終止字串的求值,在PHP4中,你可以使用return來傳回一個值,這個值將會成為eval( )的結果,在PHP3中,它不會傳回任何東西。

Example :

<?php

   $string = 'cup';

   $name = 'coffee';

   $str = 'This is a $string with my $name in it.<br>';

   echo $str; eval ("\$str = \"$str\";");

   echo $str;

?>

上面的範例將會顯示出 :

This is a $string with my $name in it.

This is a cup with my coffee in it.

TOP

《PHP》『雜項函式庫』exit --- 終止目前程式

exit

(unknown)

exit ---  終止目前程式

語法 : void exit(void);

說明 :

這個語言建造終止程式的剖析,它不會傳回任何值。

參考 : die( )

TOP

《PHP》『雜項函式庫』func_get_arg --- 從參數列表傳回項目

func_get_arg

(PHP4 >= 4.0b4)

func_get_arg ---  從參數列表傳回項目

語法 : int func_get_arg (int arg_num)

說明 :

傳回使用者定義函式的參數列表的第arg_num個參數,函式的參數是從0開始計算。如果是從函式定義的外面來呼叫此函式,則func_get_arg( )將會產生警告。

如果arg_num大於函式實際傳遞參數的數目,則將會產生警告並且func_get_arg( )將會傳回FALSE。

Example :

<?php

   function foo() {

                $numargs = func_num_args();

                echo "Number of arguments: $numargs<br>\n";

                if ($numargs >= 2) {

                            echo "Second argument is: " . func_get_arg (1) . "<br>\n";

               }

  }

  foo (1, 2, 3);

?>

func_get_arg( )可以用來結合func_num_args( )和func_get_args( )來允許使用者定義的函式接受variable-length參數列表。

注意 : 此函式是PHP4中新增的函式

TOP

 28 123
發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。