來自http://www.linji.cn/1096.htm
1. define() 的功能可以讓我們自行定義所需要的常數
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // 輸出 "Hello world."字串
echo Constant."<br />"; // 輸出 "Constant" 沒有大寫
define("GREETING", "Hello you.", true);
echo GREETING; // 輸出 "Hello you."
echo Greeting; // 輸出 "Hello you." 在後面加 true
?>
"COPYRIGHT" 要大寫,如果沒有大寫,必須在後面加 true
2. 在 PHP 中,全域變數的有效範圍 (scope) 僅限於主要程式中,不會影響到函式中同名的變數,也就是全域變數與區域變數互不侵犯。若要變數能通透到函式中,就要用到 $GLOBALS 陣列或是使用 global 宣告。
3. $GLOBALS["PHP_SELF"] : 取得目前執行 PHP 程式頁面的檔名
<?php
// 本程式使用 $GLOBALS 陣列
function myfunc() {
echo $GLOBALS["PHP_SELF"];
}
myfunc();
?>
4. 函式在執行時所產生的變數,在函式結束時就消失了,有時因為程式的需要,函式在迴圈中,當不希望變數在每次執行完函式就消失的話,靜態變數 (static variable) 就派上用場了。下例中,使用 $mystr 變數之前,先在變數前面加上 static,即表示變數 $mystr 是靜態變數,當每次執行 myfunc() 函式時,$mystr 的值會一直增加,每執行一次就多一個哈字。若將 static 的靜態變數宣告拿掉,就沒辦法累加哈字了。
<?php
// 靜態變數的例子
function myfunc() {
static $mystr;
$mystr.="哈";
echo $mystr."<br>\n";
}
myfunc(); // 哈
myfunc(); // 哈哈
myfunc(); // 哈哈哈
?>
5. 變數在引號中的妙用
單引號 ' '
死翹翹,沒有任何作用,直接輸出裡面的內容
雙引號 " "
聰明的 PHP 會自動幫你處理,輸出時會將裡面的變數替換
6. 表格的顏色,讓隔行的顏色不同。
<?php
function TdBackColor() { // 定義函數
static $ColorStr;
if ($ColorStr=="808080") {
$ColorStr="c0c0c0";
} else {
$ColorStr="808080";
}
return($ColorStr);
}
echo "<table border=1>\n";
for ($i=0; $i<10; $i++) {
$ColorStr=TdBackColor(); // 調用函數
echo "<tr><td bgcolor=".$ColorStr.">這是第".$i."行</td></tr>\n";
}
echo "</table>";
?>
7. PHP 的變數提示上,最令人覺得不可思議的則是變數的變數 (variable variable)。這是充分利用 PHP 特性玩出的特殊技巧
<?php
$a = "Hello";
$$a = "world";
echo "$a, $Hello"; // Hello, world 第二個$Hello就是$$a,只不過是用$a的值Hello代替了它
echo "$a, ${$a}";
/* 也是 Hello, world 第二個${$a}就是$$a,[b][color=#FF0000]這裡不理解為什麼要用{$a}這種形式調用變數$a,而且只有這種調用才能正確的輸出(經測試),為什麼不能直接調用$$a?[/color]也許:{$a}就可以得到$a的值Hello,然後${$a}也就變成了$Hello的形式,變數名也就變成了Hello,也就是變數$a的值,這個就可以理解成變數的變數(以變數的值作為新變數的變數名)[/b] */
?>
8. 由於 PHP 許多語法都是 C 語言的翻版,故 PHP 在使用變數時,隨時都可以使用新的變數,只要在使用前將變數初始化就好了,不必像 Pascal 語言那樣嚴謹,所有要使用的變數都要事先宣告。這當然有好處與壞處:好處是使用方便、自由;壞處就是常常因這些自由而付出相當大的代價除錯。在程式碼短的 PHP 程式當然不成問題,當程式在數百數千行,甚至 include 或 require 好幾層之後,問題就浮現出來了。無論如何,保持良好的寫作習慣才是避免浪費青春的方法。