表達式是php最重要的基石。在php中,幾乎所寫的任何東西都是一個表達式。簡單但卻最精確的定義一個表達式的方式就是“任何有值的東西”。
最基本的表達式形式是常量和變數。當鍵入“$a=5”,即將值“5”分配給變數$a。“5”,很明顯,其值為5,換句話說“5”是一個值為5的表達式(在這裡,“5”是一個整型常量)。
賦值之後,所期待情況是$a的值為5,因而如果寫下$b=$a,期望的是它猶如$b=5一樣。換句話說,$a是一個值也為5的表達式。如果一切運行正確,那這正是將要發生的正確結果。
稍微複雜的表達式例子就是函式。例如,考慮下面的函式:
<?php
functionfoo()
{
return5;
}
?>假定已經熟悉了函式的概念(如果不是的話,請看一下函式的相關章節),那么鍵入$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/FI2中,語句“$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
functiondouble($i)
{
return$i*2;
}
$b=$a=5;/*assignthevaluefiveintothevariable$aand$b*/
$c=$a++;/*post-increment,assignoriginalvalueof$a
(5)to$c*/
$e=$d=++$b;/*pre-increment,assigntheincrementedvalueof
$b(6)to$dand$e*/
/*atthispoint,both$dand$eareequalto6*/
$f=double($d++);/*assigntwicethevalueof$dbefore
theincrement,2*6=12to$f*/
$g=double(++$e);/*assigntwicethevalueof$eafter
theincrement,2*7=14to$g*/
$h=$g+=10;/*first,$gisincrementedby10andendswiththe
valueof24.thevalueoftheassignment(24)is
thenassignedinto$h,and$hendswiththevalue
of24aswell.*/
?>一些表達式可以被當成語句。這時,一條語句的形式是'expr'';',即一個表達式加一個分號結尾。在“$b=$a=5;”中,$a=5是一個有效的表達式,但它本身不是一條語句。“$b=$a=5;”是一條有效的語句。
最後一件值得提起的事情就是表達式的真值。在許多事件中,大體上主要是在條件執行和循環中,不要專注於表達式中明確的值,反而要注意表達式的值是否是TRUE或者FALSE。常量TRUE和FALSE(大小寫無關)是兩種可能的Boolean值。如果有必要,一個表達式將自動轉換為Boolean。參見類型強制轉換一節。
php提供了一套完整強大的表達式,而為它提供完整的檔案資料已經超出了本手冊的範圍。上面的例子應該為你提供了一個好的關於什麼是表達式和怎樣構建一個有用的表達式的概念。在本手冊的其餘部分,我們將始終使用expr來表示一個有效的php表達式 。
相關詞條
-
php 表達式
5 5 5
-
PHP
PHP,外文名:PHP(Hypertext Preprocessor),中文名是超文本預處理器,一種通用開源腳本語言。語法吸收了C語言、Java和Per...
-
php編輯器
PHPEclipse。 IDE。 PHPEdit。
什麼是 IDE? Eclipse Komodo PHP 設計器 PhpED -
PHP[超文本預處理器]
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和...
發展 開發工具 特性 優勢 技術套用 -
PHP課程
PHP 是一種 HTML 內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛的運用。PHP的另一個含義是:...
概述 初級部分(IFE) 中級部分(IPE) 高級部分(IAE) -
零基礎學PHP
《零基礎學PHP》是2008年3月1日機械工業出版出版的圖書,作者是馬忠超。
2008年機械工業出版社出版圖書 2012年機械工業出版社出版圖書 -
《PHP實例精通》
《PHP實例精通》由宮垂剛編著,本書從易讀性、實用性方面出發,幫助讀者在整個過程中,建立一種對問題進行思考、解決的方法。
基本信息 圖書簡介 圖書目錄 -
PHP實例精通
從內容方面講,書中介紹的內容比較全面,從PHP語法知識的細緻實例,到常用函式的套用實例,到最後通過大型實例的形式,對學習過的函式,進行統一的實例講解。在...
圖書簡介 圖書目錄 -
PHP培訓課程
PHP培訓在教學中會以具體案例讓學員直接掌握其方式方法,上機操作後學員不僅保持對兄弟連IT教育PHP有學習興趣,還將激發其更大的學習信心。
兄弟連IT教育-基本概念 兄弟連IT教育-PHP簡介編輯 兄弟連IT教育-培訓內容編輯