發表文章

目前顯示的是 2009的文章

PHP:常數

PHP 中的常數必須要在類別內容之外,使用 define() 函式或 const 關鍵字來定義,而且一但定義完成,就不可再更改其值。如下: <?php define("CONSTANT_1", "Hello world."); const CONSTANT_2 = 'Hello World'; echo CONSTANT_1; // outputs "Hello world." echo Constant_1; // outputs "Constant" and issues a notice. echo CONSTANT_2; // outputs "Hello world." ?> 與其他變數不同,在使用常數時,前面並不需要加上 $ 符號。 constant("name"):回傳一個名稱叫做 name 的常數的值。 get_defined_constants(boolean):回傳一個包含目前所有已定義的常數的陣列,包含系統定義以及使用者自訂的。可以透過設定 true 或 false 來決定回傳的陣列要不要進一步將常數分門別類。

PHP:變數範圍

PHP 中的變數有著單一的存取範圍,也就是它定義時所在的範圍;如果在函數外定義,則為全域變數 (global variables),整個 PHP 頁面的地方都可以使用到此變數,包含被 required 及 included 的檔案中也行;但若是定義在函式中的,則稱本地變數 (local variables),在該函式之外的地方即無法使用。 但與 C-like 語言不同的地方是,若你在函數外定義了某個變數,在函數內沒有先定義而直接使用了一個同樣名稱的變數時,PHP 會將 函數內的那個視為新定義的變數 ,而不是沿用那個同名的全域變數;除非你以 global 關鍵字或 $GLOBALS 陣列來指定你的確要在函數中使用全域變數: <?php $a = 1; $b = 2; function test(){   // 指向一個新定義的本地變數,因尚未指定初值,所以不會印出東西   echo $a; } function Sum1(){   //使用 global 關鍵字說明這兩個變數是指向全域變數的   global $a, $b;   $b = $a + $b; } function Sum2(){   //使用 $GLOBALS 陣列指定全域變數   $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } ?> PHP 中的靜態 (static) 變數只能在函式中使用;靜態變數的值在程式離開函式後還會繼續保留,而且如果試圖以運算式的結果來初始化靜態變數時會產生錯誤。 <?php function foo(){   static $int = 0; // correct   static $int = 1+2; // wrong (as it is an expression)   static $int = sqrt(121); // wrong (as it is an expression too)   //$int 的值在每次 foo() 被呼叫時都會加 1   $int++;   echo $int; } ?>

PHP:callback函數的使用

PHP 中有某些函數允許使用使用者定義的函數來作為參數,例如:call_user_func()、usort()。 如果想呼叫的是某物件的方法時,其參數則必須是一個包含兩個元素的陣列,index 為 0 的元素為欲呼叫其方法的物件變數,index 為 1 的元素則是方法名。 以下是使用的例子: <?php // An example callback function function my_callback_function() {   echo 'hello world!'; } // An example callback method class MyClass {   static function myCallbackMethod() {     echo 'Hello World!';   } } // Type 1: Simple callback call_user_func('my_callback_function'); // Type 2: Static class method call call_user_func(array('MyClass', 'myCallbackMethod')); // Type 3: Object method call $obj = new MyClass(); call_user_func(array($obj, 'myCallbackMethod')); // Type 4: Static class method call (As of PHP 5.2.3) call_user_func('MyClass::myCallbackMethod'); // Type 5: Relative static class method call (As of PHP 5.3.0) class A {   public static function who() {     echo "A\n";   } } class B extends A {   public static function who() {     echo "B\n...

PHP常用函數:陣列(array)

如果初始化為 $arr = array(1, 2, 3, 4, 5); $arr[] = 10; 插入一個 index 為 5,value 為 10 的元素。 $arr["x"] = 18; 插入一個 index 為字串 "x",value 為整數 18 的元素。 count($arr) :計算陣列裡的元素個數。 unset($arr[1]) :去掉 index 為 1 的元素 unset($arr) :將整個陣列清空,但之後如果再加入元素,其 index 是往上累加的,而非從 0 開始。 print_r($arr) :(print human-readable)印出對人們來說較易讀的變數資訊,如果傳入的變數是陣列,則會將其中的 key-value 全都印出來。 array_values($arr) :由於用 unset() 去掉陣列的元素後 index 可能會很混亂,此時可用 array_values() 函數來重整 index。 <?php $a = array(1 => 'one', 2 => 'two', 3 => 'three'); unset($a[2]); /* will produce an array that would have been defined as $a = array(1 => 'one', 3 => 'three'); and NOT $a = array(1 => 'one', 2 =>'three'); */ $b = array_values($a); // Now $b is array(0 => 'one', 1 =>'three') ?> (array) $scalarVar , array($scalarVar) :兩者都是將某個數字換字串型別的變數 $scalarVar 轉成一個只具有一個元素,其 index 為 0,value 為 $scalarVar 的陣列。 array_diff($arr1, $arr2, ...) :回傳一個陣列,...