PHP編程與應用
4、環(huán)境變量
PHP自動將環(huán)境變量轉(zhuǎn)換為普通的變量。
echo $HOME; /* Shows the HOME environment variable, if set. */
盡管來自GET,POST 及 Cookie結(jié)構(gòu)的信息也會被自動轉(zhuǎn)化為PHP的變量, 但最好明確的從環(huán)境變量中讀取它們以確保獲得正確的值。為此可使用 getenv() 函數(shù)。也可以通過 putenv() 函數(shù)設置變量。
變量類型轉(zhuǎn)換
PHP中不需要(也不支持)在變量定義時做顯式的類型聲明;一個變量的類型取決于它的值的類型。也就是說,如果你給變量var 賦了一個字符串值,var 就成為字符串變量。如果你又賦了一個整型值給var, 它就變成了一個整型變量。
一個PHP自動類型轉(zhuǎn)換的例子是加法操作符 '+'。如果任何一個操作數(shù)是double型,則所有的操作數(shù)按 double類型來計算, 結(jié)果也是double型的。否則,所有的操作數(shù)按integer類型來計算, 結(jié)果也是integer型的。注意:操作數(shù)本身的類型不發(fā)生變化;類型變換僅在計算時做
$foo = "0"; // $foo is a string (ASCII 48)
$foo++; // $foo is the string "1" (ASCII 49)
$foo += 1; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is a double (15)
$foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
要改變變量的類型,也可用settype() 函數(shù)。
1、強制類型轉(zhuǎn)換
PHP中的強制類型轉(zhuǎn)換和C中一樣: 在需要進行類型強制轉(zhuǎn)換的變量前的括號中寫出想要的類型名。
$foo = 10; // $foo is an integer
$bar = (double) $foo; // $bar is a double
允許的強制轉(zhuǎn)換是:
(int), (integer) - cast to integer
(real), (double), (float) - cast to double
(string) - cast to string
(array) - cast to array
(object) - cast to object
注意:括號中可以含有tab或空格,下面的函數(shù)將被計算:
$foo = (int) $bar;
$foo = ( int ) $bar;
2、字符串轉(zhuǎn)換
當字符串作為數(shù)值類型計算時,結(jié)果的值和類型按以下方式?jīng)Q定。
如果字符串中包含任何'.', 'e',及'E'字符,則被作為double類型計算。否則,就作為integer類型計算。
該值從字符串最開始算起。如果字符串是合法的數(shù)字,則使用該值,否則值為 0 。合法的數(shù)字是一個符號位(可選),后跟一位或幾位數(shù)字(也可含有一個十進制的小數(shù)點), 后跟一位可選的指數(shù)。指數(shù)是一個 'e' 或 'E'后跟一個或幾個數(shù)字。
$foo = 1 + "10.5"; // $foo is a double (11.5)
$foo = 1 + "-1.3e3"; // $foo is a double (-1299)
$foo = 1 + "bob-1.3e3"; // $foo is a double (1)
$foo = 1 + "bob3"; // $foo is an integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is an integer (11)
$foo = 1 + "10 Little Piggies"; // $foo is a double (11); the string contains 'e'
第三章 運算符
下面我分別看一下PHP3的算術(shù)、字符串、邏輯與比較等運算符。
1、算術(shù)運算符
。骸 $a + $b 加 $a加上$b
。骸 $a - $b 減 $a減去$b
。骸 $a * $b 乘 $a乘以$b
/: $a / $b 除 $a除以$b
。ィ骸 $a % $b 取模 $a除以$b的余數(shù)
如果兩個操作數(shù)都是整型值(字符串將被轉(zhuǎn)換為整型值),除號("/") 返回整型值(整除的值)。如果任一個操作數(shù)是浮點值,則做浮點除法。
2 字符串運算符
字符串操作符只有字符串連接符 (".")。
$a = "Hello ";
$b = $a . "World!"; // now $b = "Hello World!"
3、賦值運算符
基本的賦值運算符是 "="。
一個賦值表達式的值就是所賦給的值。例如, 表達式 $a = 3 的值是3。 這允許你這樣做一些復雜的事情:
$a = ($b = 4) + 5; // 現(xiàn)在 $a 等于 9, $b為4 。
除了基本賦值符外,還有"復合運算符"。對于所有的二進制數(shù)和字符串,允許你做變量自我復合運算。例如:
=: $a = 3;
。剑$a += 5; // 把$a 設成 8, 也就是: $a = $a + 5;
$b = "Hello ";
. :$b .= "There!"; // 把 $b 設成 "Hello There!", 就象 $b = $b . "There!";
4、 位運算符
位運算允許你對指定的數(shù)據(jù)置位或復位。
&:與運算,$a & $b 與 $a和$b都被置位則結(jié)果被置位
|:或運算,$a | $b 或 $a或$b有一個被置位則結(jié)果被置位
~:非運算,~ $a 非 $a沒有被置位則結(jié)果被置位
5、 邏輯運算符
and: $a and $b 與 $a和$b同時為真則結(jié)果為真
or : $a or $b 或 $a或$b有一個為真則結(jié)果為真
xor: $a xor $b 異或 $a和$b不同時為真則結(jié)果為真
! : ! $a 非 $a為假則結(jié)果為真
&&: $a && $b 與 $a和$b同時為真則結(jié)果為真
||: $a || $b 或 $a或$b有一個為真則結(jié)果為真
比較兩個變量時,"與"和"或"運算有兩種運算符這是以為兩種運算符有不同的優(yōu)先級
6、 比較運算符
比較運算符,就象名字一樣,允許你比較兩個值。
==: $a == $b 等于 $a等于$b結(jié)果為真
!=: $a != $b 不等于 $a不等于$b結(jié)果為真
< : $a < $b 小于 $a小于$結(jié)果為真
> : $a > $b 大于 $a大于$b結(jié)果為真
<=: $a <= $b 小于等于 $a小于或等于$b結(jié)果為真
>=: $a >= $b 大于等于 $a大于或等于$b結(jié)果為真
第四章 表達式
表達式是PHP最重要的組成元素。在PHP 3.0中,幾乎你所寫的任何東西都是表達式。表達式的最簡單但精確的定義是"有一個值的任何東西"。
一個簡單的例子是常量和變量。當你寫 "$a = 5"時, 你給 $a 賦了值 '5' 。 (在這種情況下, '5' 是一個整形常量)!≡诖,你是希望把 $a 賦值成 5。所以寫 $b = $a 時,你希望的結(jié)果就是 $b = 5 。即 $a 是一個值為 5 的表達式。
復雜表達式的簡單例子是函數(shù)。比如說,考慮以下函數(shù):
function foo()
{
return 5;
}
如果你認為寫$c = foo()實際上和寫 $c = 5是一樣的,那么你是對的。函數(shù)是值為其返回值的表達式。因為foo() 返回5, 所以表達式 'foo()'的值是 5 。
PHP的值當然不限于整形,且通常都不是。PHP支持三類值的類型: 整形值,浮點值和字符串值。PHP 支持兩種混合類型(non-scalar): 數(shù)組和對象。這兩種類型的值可以賦給變量或從函數(shù)中返回。
PHP 3是一種面向表達式的語言, 所以幾乎所有東西都是表達式?紤]我們已經(jīng)討論的例子, '$a = 5'。很容易看出這里有兩個值,整形常量 '5'的值,和也被賦為 5 的變量 $a 的值。但是這里實際上還有一個附加的值,就是賦值語句本身的值。賦值語句本身的值就是被賦給的值,本例中是 5. 事實上,它意味著不考慮 '$a = 5'要做什么,它是一個值為 5 的表達式。這樣,寫諸如 '$b = ($a = 5)'的語句,就象 '$a = 5; $b = 5;' (每條語句末尾有一個分號)。因為賦值的順序是從右向左的你也可以寫成 '$b = $a = 5'。
表達式計算方向的另一個好例子是先加、后加及先減、后減。PHP/FI和多數(shù)其他語言的用戶可能很熟悉 variable++ 和 variable--。這是自加和自減操作。在 PHP/FI 2 中,語句 '$a++' 沒有值(它不是表達式), 這樣你就既不能賦值給它也不能通過任何辦法使用它。PHP 3 把它們變成了和 C 中一樣的表達式從而增強了自加和自減運算的能力。和 C 中類似,PHP 3中也有兩種類型的自加----先加和后加。先加和后加的本質(zhì)都是變量自加,對于變量本身的作用是一樣的。不同點是自加表達式的值。形如 '++$variable'的先加, 計算變量自加后的值(PHP先做變量自加,再讀取它的值,也就叫做 '先加').形如'$variable++'的后加, 則先計算原始變量$variable的值,然后才進行自加 (PHP在讀取變量的值后再做自加,因此叫做'后加').