表達式是 PHP 最重要的基石。在 PHP 中,幾乎所寫的任何東西都是一個表達式。簡單但卻最精確的定義一個表達式的方式就是「任何有值的東西」。
最基本的表達式形式是常數和變數。當鍵入“ $a = 5”,即將值“5”分配給變數 $a 。 “5”,很明顯,其值為 5,換句話說“5”是一個值為 5 的表達式(在這裡,“5”是一個整型常數)。
賦值之後,所預期的情況是 $a 的值為 5,因為而若寫出 $b = $a ,且預期的是它如 $b = 5 相同。換句話說, $a 是一個值也為 5 的表達式。如果一切運行正確,那麼這正是將要發生的正確結果。
稍微複雜的表達式範例就是函數。例如,考慮下面的函數:
<?php function foo () { return 5 ; } ?>
假定已經熟悉了函數的概念(果不是的話,請看一下函數的相關章節),那麼鍵入 $c = foo() 本質上就如寫下 $c = 5,這沒錯。函數也是表達式,表達式的值即為它們的回傳值。既然 foo() 回傳 5,表達式「foo()」的值也是 5。通常函數不會只傳回一個靜態值,而可能會計算一些東西。
當然,PHP 中的值常常不是整數的。 PHP 支援四個標量值(標量值不能分割成較小的單元,例如和陣列不同)型別:整數值( integer ),浮點數值( float ),字串值( string )和布林值( boolean )。 PHP 也支援兩種複合型別:陣列和物件。這兩種類型具可以賦值給變數或從函數傳回。
PHP 和其它語言一樣在表達式的道路上發展,但推進得更深遠。 PHP 是一種以表達式為導向的語言,從這一方面來講幾乎一切都是表達式。考慮剛才已經研究過的例子,「 $a = 5」。很顯然這裡涉及到兩個值,整型常數 5 的值以及而且變數 $a 的值,它也被更新為 5。但是事實是這裡還涉及到一個額外的值,即附值語句本身的值。賦值語句本身求值為被賦的值,即 5。實際上這意味著“ $a = 5”,不必管它是做什麼的,是一個值為 5 的表達式。因而,這樣寫「 $b = ( $a = 5)」和這樣寫「 $a =5; $b =5」(分號標示語句的結束)是一樣的。因為賦值操作的順序是由右到左的,也可以這麼寫「 $b = $a =5」。
另外一個很好的面向表達式的例子就是前、後遞增和遞減。 PHP 和多數其它語言的使用者應該比較熟悉變數 ++ 和變數 -- 符號。即遞增和遞減運算子。在 PHP/FI 2 中,語句「$a++」沒有值(不是表達式),這樣的話你便不能為其賦值或以任何其方式來使用它。 PHP 透過將其變成表達式,類似 C 語言,增強了遞增/遞減的能力。在 PHP 和 C 語言 中,有兩種類型的遞增前遞增和後遞增,本質上來講,前遞增和後遞增均增加了變數的值,並且對於變數的影響是相同的。不同的是遞增表達式的值。前遞增,寫做“++$variable”,求增加後的值(PHP 在讀取變數的值之前,增加變數的值,因而稱為“前遞增”)。後遞增,寫做“$variable++”,求變數未遞增之前的原始值(PHP 在讀取變數的值之後,增加變數的值,因而叫做“後遞增”)。
一個常用到表達式類型是比較表達式。這些表達式求值 FALSE 或 TRUE 。 PHP 支援 >(大於),>=(大於等於),==(等於),!=(不等於),<(小於),<= (小於等於)。 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 -= 5”(从变量 $a 的值中减去 5),“$b *= 7”(变量 $b 乘以 7),等等。
还有一个表达式,如果没有在别的语言中看到过的话,可能看上去很奇怪,即三元条件运算符:
$first ? $second : $third
如果第一个子表达式的值是 TRUE (非零),那么计算第二个子表达式的值,其值即为整个表达式的值。否则,将是第三个子表达式的值。
下面的例子一般来说应该有助于理解前、后递增和表达式:
<?php function double ( $i ) { return $i * 2 ; } $b = $a = 5 ; $c = $a ++; $e = $d = ++ $b ; $f = double ( $d ++); $g = double (++ $e ); $h = $g += 10 ; ?>
一些表达式可以被当成语句。这时,一条语句的形式是 'expr' ';',即一个表达式加一个分号结尾。在“$b=$a=5;”中,$a=5 是一个有效的表达式,但它本身不是一条语句。“$b=$a=5;”是一条有效的语句。
最后一件值得提起的事情就是表达式的真值。在许多事件中,大体上主要是在条件执行和循环中,不要专注于表达式中明确的值,反而要注意表达式的值是否是 TRUE 或者 FALSE 。常量 TRUE 和 FALSE (大小写无关)是两种可能的 Boolean 值。如果有必要,一个表达式将自动转换为 Boolean。参见类型强制转换一节。
PHP 提供了一套完整强大的表达式,而为它提供完整的文件资料已经超出了本手册的范围。上面的例子应该为你提供了一个好的关于什么是表达式和怎样构建一个有用的表达式的概念。在本手册的其余部分,我们将始终使用expr 来表示一个有效的 PHP 表达式。
以上是php 中的表達式是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!