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,这里不理解为什么要用{$a}这种形式调用变量$a,而且只有这种调用才能正确的输出(经测试),为什么不能直接调用$$a?也许:{$a}就可以得到$a的值Hello,然后${$a}也就变成了$Hello的形式,变量名也就变成了Hello,也就是变量$a的值,这个就可以理解成变量的变量(以变量的值作为新变量的变量名) */
?>
8. 由於 PHP 許多語法都是 C 語言的翻版,故 PHP 在使用變數時,隨時都可以使用新的變數,只要在
使用前將變數初始化就好了,不必像 Pascal 語言那樣嚴謹,所有要使用的變數都要事先宣告。這當然有好處與壞處:好處是使用方便、自由;壞處就是常常因這些自由而付出相當大的代價除錯。在程式碼短的 PHP 程式當然不成問題,當程式在數百數千行,甚至 include 或 require 好幾層之後,問題就浮現出來了。無論如何,
保持良好的寫作習慣才是避免浪費青春的方法。