男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

表達式

表達式是 PHP 最重要的構建部分。在 PHP 中,幾乎所寫(xiě)的任何東西都是一個(gè)表達式。簡(jiǎn)單但卻最精確的定義一個(gè)表達式的方式就是“任何有值的東西”。

最基本的表達式形式是常量和變量。當鍵入“$a = 5”,即將值“5”分配給變量 $a?!?”,很明顯,其值為 5,換句話(huà)說(shuō)“5”是一個(gè)值為 5 的表達式(在這里,“5”是一個(gè)整型常量)。

賦值之后,所期待情況是 $a 的值為 5,因而如果寫(xiě)下 $b = $a,期望的是它猶如 $b = 5 一樣。換句話(huà)說(shuō),$a 是一個(gè)值也為 5 的表達式。如果一切運行正確,那這正是將要發(fā)生的正確結果。

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

<?php
function foo ()
{
    return 
5;
}
?>

假定已經(jīng)熟悉了函數的概念(果不是的話(huà),請看一下函數的相關(guān)章節),那么鍵入 $c = foo() 從本質(zhì)上來(lái)說(shuō)就如寫(xiě)下 $c = 5,這沒(méi)錯。函數也是表達式,表達式的值即為它們的返回值。既然 foo() 返回 5,表達式“foo()”的值也是 5。通常函數不會(huì )僅僅返回一個(gè)靜態(tài)值,而可能會(huì )計算一些東西。

當然,PHP 中的值常常并非是整型的。PHP 支持四種標量值(標量值不能拆分為更小的單元,例如和數組不同)類(lèi)型:整型值(int),浮點(diǎn)數值(float),字符串值(string)和布爾值(bool)。PHP 也支持兩種復合類(lèi)型:數組和對象。這兩種類(lèi)型具可以賦值給變量或者從函數返回。

PHP 和其它語(yǔ)言一樣在表達式的道路上發(fā)展,但推進(jìn)得更深遠。PHP 是一種面向表達式的語(yǔ)言,從這一方面來(lái)講幾乎一切都是表達式??紤]剛才已經(jīng)研究過(guò)的例子,“$a = 5”。很顯然這里涉及到兩個(gè)值,整型常量 5 的值以及而且變量 $a 的值,它也被更新為 5。但是事實(shí)是這里還涉及到一個(gè)額外的值,即附值語(yǔ)句本身的值。賦值語(yǔ)句本身求值為被賦的值,即 5。實(shí)際上這意味著(zhù)“$a = 5”,不必管它是做什么的,是一個(gè)值為 5 的表達式。因而,這樣寫(xiě)“$b = ($a = 5)”和這樣寫(xiě)“$a =5; $b=5”(分號標志著(zhù)語(yǔ)句的結束)是一樣的。因為賦值操作的順序是由右到左的,也可以這么寫(xiě)“$b = $a =5”。

另外一個(gè)很好的面向表達式的例子就是前、后遞增和遞減。PHP 和多數其它語(yǔ)言的用戶(hù)應該比較熟悉變量 ++ 和變量 -- 符號。即遞增和遞減運算符。在 PHP 和 C 語(yǔ)言 中,有兩種類(lèi)型的遞增前遞增和后遞增,本質(zhì)上來(lái)講,前遞增和后遞增均增加了變量的值,并且對于變量的影響是相同的。不同的是遞增表達式的值。前遞增,寫(xiě)做“++$variable”,求增加后的值(PHP 在讀取變量的值之前,增加變量的值,因而稱(chēng)之為“前遞增”)。后遞增,寫(xiě)做“$variable++”,求變量未遞增之前的原始值(PHP 在讀取變量的值之后,增加變量的值,因而叫做“后遞增”)。

一個(gè)常用到表達式類(lèi)型是比較表達式。這些表達式求值 falsetrue。PHP 支持 >(大于),>=(大于等于),==(等于),!=(不等于),<(小于),<= (小于等于)。PHP 還支持全等運算符 ===(值和類(lèi)型均相同)和非全等運算符 !==(值或者類(lèi)型不同)。這些表達式都是在條件判斷語(yǔ)句,比如,if 語(yǔ)句中最常用的。

這里,將要研究的最后一個(gè)例子是組合的運算賦值表達式。已經(jīng)知道如果想要為變量 $a 加1,可以簡(jiǎn)單的寫(xiě)“$a++”或者“++$a”。但是如果想為變量增加大于 1 的值,比如 3,該怎么做?可以多次寫(xiě)“$a++”,但這樣明顯不是一種高效舒適的方法,一個(gè)更加通用的做法是“$a = $a + 3”?!?a + 3”計算 $a 加上 3 的值,并且得到的值重新賦予變量 $a,于是 $a 的值增加了3。在 PHP 及其它幾種類(lèi)似 C 的語(yǔ)言中,可以以一種更加簡(jiǎn)短的形式完成上述功能,因而也更加清楚快捷。為 $a 的當前值加 3,可以這樣寫(xiě):“$a += 3”。這里的意思是“取變量 $a 的值,加 3,得到的結果再次分配給變量 $a”。除了更簡(jiǎn)略和清楚外,也可以更快的運行?!?a += 3”的值,如同一個(gè)正常賦值操作的值,是賦值后的值。注意它不是 3,而是 $a 的值加上3 之后的值(此值將被賦給 $a)。任何二元運算符都可以用運算賦值模式,例如“$a -= 5”(從變量 $a 的值中減去 5),“$b *= 7”(變量 $b 乘以 7),等等。

還有一個(gè)表達式,如果沒(méi)有在別的語(yǔ)言中看到過(guò)的話(huà),可能看上去很奇怪,即三元條件運算符:

$first ? $second : $third
如果第一個(gè)子表達式的值是 true(非零),那么計算第二個(gè)子表達式的值,其值即為整個(gè)表達式的值。否則,將是第三個(gè)子表達式的值。

下面的例子一般來(lái)說(shuō)應該有助于理解前、后遞增和表達式:

<?php
function double($i)
{
    return 
$i*2;
}
$b $a 5;        /* 賦值 5 到變量 $a 和 $b */
$c $a++;          /* 后自增,將 $a (5) 的原始值賦給 $c */
$e $d = ++$b;     /* 前自增,將 $b (6) 的遞增值賦給 $d 和 $e */

/* 此時(shí), $d 和 $e 都等于 6 */

$f double($d++);  /* 自增前將兩倍值賦值給 $d ,即 2*6 = 12 賦值給 $f */
$g double(++$e);  /* 自增后將兩倍值賦值給 $e ,即 2*7 = 14 賦值給 $g */
$h $g += 10;      /* 首先, $g 自增 10 后等于 24。然后將值 (24) 賦值給了 $h,
                       $h 的值也等于 24。 */
?>

一些表達式可以被當成語(yǔ)句。這時(shí),一條語(yǔ)句的形式是 'expr' ';',即一個(gè)表達式加一個(gè)分號結尾。在“$b=$a=5;”中,$a=5 是一個(gè)有效的表達式,但它本身不是一條語(yǔ)句?!?b=$a=5;”是一條有效的語(yǔ)句。

最后一件值得提起的事情就是表達式的真值。在許多事件中,大體上主要是在條件執行和循環(huán)中,不要專(zhuān)注于表達式中明確的值,反而要注意表達式的值是否是 true 或者 false。常量 truefalse(大小寫(xiě)無(wú)關(guān))是兩種可能的 Boolean 值。如果有必要,一個(gè)表達式將自動(dòng)轉換為 Boolean。參見(jiàn)類(lèi)型強制轉換一節。

PHP 提供了一套完整強大的表達式,而為它提供完整的文件資料已經(jīng)超出了本手冊的范圍。上面的例子應該為你提供了一個(gè)好的關(guān)于什么是表達式和怎樣構建一個(gè)有用的表達式的概念。在本手冊的其余部分,我們將始終使用 expr 來(lái)表示一個(gè)有效的 PHP 表達式。

男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站