程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中的表達式

PHP中的表達式

編輯:關於PHP編程

表達式是PHP 最重要的基石。在 PHP 中,幾乎你所寫的任何東西都是一個表達式。簡單但卻最精確的定義一個表達式的方式就是“anything that has a value”。

最基本的表達式形式是常量和變量。當你鍵入“$a = 5”,即將值 '5' 分配給變量 $a。'5',很明顯,值為 5,換句話說 '5' 是一個值為5的表達式(既然如此,'5' 是一個整型常量)。

賦值之後,你所盼望的情況是 $a 的值為5,因而如果你寫下 $b = $a,期望的是它猶如 $b = 5 一樣。換句話說,$a 是一個值也為 5 的表達式。如果一切運行正確,那這正是將要發生的正確結果。

稍微復雜的表達式例子就是函數。例如,考慮下面的函數:

<?phpfunction foo (){   return 5;}?> 

假定你已經熟悉了函數的概念(如果不是的話,請看一下函數的相關章節),那麼鍵入 $c = foo() 從本質上來說就如寫下 $c = 5,而且你是正確的。 函數也是表達式,表達式的值即為它們的返回值。既然 foo() 返回5,表達式 ‘foo()’ 的值也是5。通常函數不會僅僅返回一個靜態值,而可能會計算一些東西。

當然,PHP 中的值常常並非是整型的。PHP 支持三種標量值類型:整型值,浮點值和字符串值(標量值不能拆分為更小的單元,比如:數組)。PHP 也支持兩種復合類型:數組和對象。這兩種類型具可以賦值給變量或者從函數返回。

到目前為止,PHP/FI 2 的用戶不應該感到任何的變化。然而,當許多其它語言為之努力的時候,PHP 在相同道路上促進了表達式的成長。PHP 是一種面向表達式的語言,從這一方面來講幾乎一切都是表達式。考慮剛才我們已經研究過的例子,“$a = 5”。可以輕松的看到這裡有兩個相關的值,整型常量 5,而且變量 $a 的值也被更新為 5。但是事實是:這裡只有一個相關的附加值,即被分配的值本身。賦值操作計算需分配的值,即 5。實際上,意味著“$a = 5”,不必管它是做什麼的,是一個值為 5 的表達式。因而,一些像這樣的代碼“$b = ($a = 5)”和“$a =5; $b=5”(分號標志著語句的結束)。因為賦值操作的順序是由右到左的,你也可以這麼寫“$b = $a =5”。

另外一個很好的面向表達式的例子就是前、後遞增和遞減。PHP/FI 2 和多數其它語言的用戶應該比較熟悉變量 ++ 和變量 -- 符號。即遞增和遞減操作符。在 PHP/FI 2 中,語句“$a++”沒有值(不是表達式),這樣的話你便不能為其賦值或者以任何其它方式來使用它。PHP 通過將其變為了表達式,類似 C 語言,增強了遞增/遞減的能力。在 PHP 和 C 語言 中,有兩種類型的遞增前遞增和後遞增,本質上來講,前遞增和後遞增均增加了變量的值,並且對於變量的影響是相同的。不同的是遞增表達式的值。前遞增,寫做“++$variable”,求增加後的值(PHP 在讀取變量的值之前,增加變量的值,因而稱之為“前遞增”)。後遞增,寫做‘$variable++’,求變量未遞增之前的原始值(PHP 在讀取變量的值之後,增加變量的值,因而叫做‘後遞增’)。【譯者注:前遞增,++$a,則該表達式的值加 1;後遞增,$a++,則該表達式的值不變。】

一個常用到表達式類型是比較表達式。這些表達式求值 0 或者 1,即 FALSE 或者 TRUE(分別的)。PHP 支持 >(大於),>=(大於等於),==(等於),!=(不等於),<(小於),<= (小於等於)。這些表達式都是在條件判斷語句,比如,if 語句中最常用的。

這裡,我們將要研究的最後一個例子是組合的賦值操作符表達式。你已經知道如果想要為變量 $a 加1,可以簡單的寫‘$a++’或者‘++$a’。但是如果你想為變量增加大於 1 的值,比如 3,該怎麼做?你可以多次寫‘$a++’,但這樣明顯不是一種高效舒適的方法,一個更加通用的做法是‘$a = $a + 3’。‘$a + 3’ 計算 $a 加上 3 的值,並且得到的值重新賦予變量 $a,於是 $a 的值增加了3。在 PHP 及其它幾種類似 C 的語言中,你可以以一種更加簡短的形式完成上述功能,因而也更加清楚快捷。為 $a 的當前值加 3,可以這樣寫:$a += 3。這裡的意思是“取變量 $a 的值,加 3,得到的結果再次分配給變量 $a”。除了更簡略和清楚外,也可以更快的運行。‘$a += 3’的值,如同一個正常賦值操作的值,是賦值後的值。注意它不是 3,而是 $a 加上3的組合值(即已經分配給 $a 的值)【譯者注:這裡表達式‘$a += 3’的值是什麼呢?不是 3,也不是 $a 的原始值,而是完成 +3 操作後變量 $a 的值】。 任何兩位操作符都可以使用在復制操作符模式,例如‘$a -= 5’(從變量 $a 的值中減去 5),‘$b *= 7’ (變量 $b 乘以 7),等等。

有一些表達式,如果你沒有在別的語言中看到過的話,可能認為它們是多余的,如三重操作符:

$first ? $second : $third

如果第一個子表達式的值是 TRUE(非零),那麼計算第二個子表達式的值,其值即為整個表達式的值。否則,將是第三個子表達式的值。

下面的例子一般來說應該可以稍微幫你理解前、後遞增和表達式: 

<?phpfunction double($i){   return $i*2;}$b = $a = 5;        /* assign the value five into the variable $a and $b */$c = $a++;          /* post-increment, assign original value of $a                       (5) to $c */$e = $d = ++$b;    /* pre-increment, assign the incremented value of                       $b (6) to $d and $e *//* at this point, both $d and $e are equal to 6 */$f = double($d++);  /* assign twice the value of $d before                       the increment, 2*6 = 12 to $f */$g = double(++$e);  /* assign twice the value of $e after                       the increment, 2*7 = 14 to $g */$h = $g += 10;      /* first, $g is incremented by 10 and ends with the                       value of 24. the value of the assignment (24) is                       then assigned into $h, and $h ends with the value                       of 24 as well. */?>

在本章的開始,我們說過我們將會描述多種語句類型,並且如同許諾的那樣,表達式可以是語句。盡管如此,不是每個表達式都是一個語句。而這樣的話,一個語句,它的形式是 'expr' ';',一個表達式有一個分號結尾。在‘$b=$a=5;’,$a = 5 是一個有效的表達式,但是它卻不是一個語句。‘$b=$a=5;’ 卻是一個有效的語句。

最後一件值得提起的事情就是表達式的真實值。在許多事件中,大體上主要是在條件執行和循環中,不要專注於表達式中明確的值,反而要注意表達式的值是否是 TRUE 或者 FALSE。常量 TRUE 和 FALSE (大小寫無關)是兩種可能的 Boolean 值。如果有必要,一個表達式將自動轉換為 Boolean。

PHP 提供了一套完整強大的表達式,而為它提供完整的文件資料已經超出了本手冊的范圍。上面的例子應該為你提供了一個好的關於什麼是表達式和怎樣構建一個有用的表達式的概念。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved