PHP基本語法大全
世上所有美好的感情加在一起,也抵不上一樁高尚的行動(dòng)。以下是小編為大家搜索整理了PHP基本語法大全,希望能給大家?guī)韼椭?更多精彩內(nèi)容請(qǐng)及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
PHP標(biāo)記
在之前的的例子中的PHP代碼是以“”為結(jié)束,這類似于所有的HTML標(biāo)記,因?yàn)樗鼈兌际且孕∮谔?hào)為開始,以大于號(hào)為結(jié)束的。這些符號(hào)就叫做PHP標(biāo)記。 PHP標(biāo)記中有4中不同的風(fēng)格供我們使用
*XML風(fēng)格
這是我們以后將使用的標(biāo)記風(fēng)格。他是PHP推薦使用的標(biāo)記風(fēng)格,服務(wù)器管理員不能禁用這種風(fēng)格的標(biāo)記,因此可以保證正在所有的服務(wù)器上使用這種風(fēng)格的標(biāo)記,特別是編寫用于不同服務(wù)器環(huán)境的應(yīng)用程序時(shí),這種標(biāo)記風(fēng)格尤為重要。這種風(fēng)格的標(biāo)記可以在XML(可擴(kuò)展置標(biāo)語言)文檔中使用,如果打算在站點(diǎn)中使用XML,就必須使用這種風(fēng)格的標(biāo)記。
*簡(jiǎn)短風(fēng)格
這種標(biāo)記風(fēng)格是最簡(jiǎn)單的,但要使用這種標(biāo)記字符,必須在配置文件中啟用short_open_tag選項(xiàng),或者啟用短標(biāo)記選項(xiàng)編譯PHP.我們不推薦使用這種標(biāo)記,因?yàn)殡m然該標(biāo)記風(fēng)格是當(dāng)前默認(rèn)啟用的,但是系統(tǒng)管理員偶爾會(huì)禁用它,它會(huì)干擾XML文檔的聲明。
*SCRIPT風(fēng)格
這種標(biāo)記風(fēng)格是最長的,使用過javascript或vbscript的人就會(huì)熟悉這種風(fēng)格
*ASP風(fēng)格
這種標(biāo)記風(fēng)格和ASP或ASP.NET的標(biāo)記風(fēng)格相同。如果在配置文件中啟用了asp_tags選項(xiàng)就可以使用它
PHP輸出語句
有兩種通過 PHP 來輸出文本的基礎(chǔ)指令:echo 和 print。在上面的例子中,我們使用了 echo 語句來輸出文本 "Hello World"。
PHP注釋
對(duì)于閱讀代碼的人來說,注釋其實(shí)就相當(dāng)于代碼的解釋和說明。注釋可以用來解釋腳本的用途,腳本編寫人,為什么要按如此的方法編寫代碼,上一次的修改時(shí)間等等,PHP支持C,C++和SHELL腳本風(fēng)格的注釋。
單行注釋 # 或 //
多行注釋 /* */
注意 : 單行注釋可以嵌套在多行注釋里使用的 但是多行注釋是無法在嵌套的
echo "這是第一種例子。\n"; // 本例是 C++ 語法的注釋 /* 本例采用多行的
注釋方式 */
echo "這是第兩種例子。\n";
?>
C 風(fēng)格的注釋在碰到第一個(gè) */ 時(shí)結(jié)束。小心不要嵌套 C 風(fēng)格的注釋,當(dāng)注釋大量代碼時(shí),可能犯該錯(cuò)誤。
/*
echo "This is a test"; /* This comment will cause a problem */
*/
?> echo "這是第三種例子。\n"; # 本例使用 UNIX Shell 語法注釋
PHP數(shù)據(jù)類型
數(shù)據(jù)類型
四種標(biāo)量類型:
? boolean(布爾型):表達(dá)了真值,可以為 TRUE 或 FALSE。
要指定一個(gè)布爾值,使用關(guān)鍵字 TRUE 或 FALSE。兩個(gè)都不區(qū)分大小寫。
$foo = True; // assign the value TRUE to $foo
?>
當(dāng)轉(zhuǎn)換為 boolean 時(shí),以下值被認(rèn)為是 FALSE:
?
?
?
?
?
? 布爾值 FALSE 整型值 0(零) 浮點(diǎn)型值 0.0(零) 空白字符串和字符串 "0" 沒有成員變量的數(shù)組 特殊類型 NULL(包括尚未設(shè)定的變量)
注意:-1 和其它非零值(不論正負(fù))一樣,被認(rèn)為是 TRUE!
? integer(整型)
integer 為整數(shù)型別。在 32 位的操作系統(tǒng)中,它的有效范圍是 -2,147,483,648 到 +2,147,483,647 (2^31+符號(hào)位)。要使用 16 進(jìn)位整數(shù)可以在面加 0x。 整型值可以用十進(jìn)制,十六進(jìn)制或八進(jìn)制符號(hào)指定,前面可以加上可選的符號(hào)(- 或者 +)。
如果用八進(jìn)制符號(hào),數(shù)字前必須加上 0(零),用十六進(jìn)制符號(hào)數(shù)字前必須加上 0x。
$a = 1234; // 十進(jìn)制數(shù)
$a = -123; // 一個(gè)負(fù)數(shù)
$a = 0123; // 八進(jìn)制數(shù)(等于十進(jìn)制的 83)
$a = 0x1A; // 十六進(jìn)制數(shù)(等于十進(jìn)制的 26)
?>
? float(也叫浮點(diǎn)數(shù),雙精度數(shù)或?qū)崝?shù))
浮點(diǎn)數(shù)為浮點(diǎn)數(shù)型別。在 32 位的操作系統(tǒng)中,它的有效范圍是 1.7E-308 到
1.7E+308。(自然底數(shù)e=2.71828183)
$a = 1.234;
$a = 1.2e3;
$a = 7E-10;
?>
? string(字符串)
即為字符串變量,無論是單一字符或數(shù)千字的字符串都是使用這個(gè)變量類型。值得注意的是要指定字符串給字符串變量,要在頭尾加上雙引號(hào) (例如: "這是字符串")。在要讓字符串換行時(shí),可使用溢出字符,也就是反斜線加上指定的
\xFE 即表十六進(jìn)位字符,詳見下表: 定義字符串時(shí),只有一種引號(hào)被視為定義符,即單引號(hào)或雙引號(hào)。于是,如果一個(gè)字符串由雙引號(hào)開始,那么只有雙引號(hào)被分析器解析。這樣,你就可以在雙引號(hào)串中包含任何其他字符,甚至單引號(hào)。下面的引號(hào)串都是合法的: $s = "I' m a student";
$s = ' I am a “student” ';
當(dāng)PHP遇到與串的開頭相對(duì)應(yīng)的引號(hào)時(shí),便認(rèn)為已經(jīng)到了字符串尾部,于是:
"Why doesn't "this" work?"
實(shí)際上被PHP語法分析器分成三個(gè)部分:
"Why doesn't "——包含一個(gè)單引號(hào)的雙引號(hào)串
this——多余的字符,分析器無法處理
" work?" ——普通字符串
上面的這個(gè)例子企圖在雙引號(hào)串中包含雙引號(hào),而分析器在遇到第二個(gè)雙引號(hào)時(shí)便認(rèn)為字符串結(jié)束了。要達(dá)到包含引號(hào)的目的, 必須分析器在遇到串內(nèi)
普通引號(hào)的時(shí)候忽略它的原意,我們?cè)谝?hào)的 前面加上一個(gè)反斜杠來告訴PHP:這個(gè)引號(hào)是字符串的一部分,正確的表示方法是這樣:
"Why doesn't \"that\" work?"
字串可以使用字串連接符(.)來連接,如:
$first_name = 'A';
$last_name = 'B';
$full_name = $first_name . ' ' . $last_name;
注意:
echo $aa. ‘test
’;
echo "$aa test
";//在雙引號(hào)中,變量名稱被變量值替代
echo ’$aa test
’;;?>//在單引號(hào)中,變量名稱或其他的文
本都會(huì)不經(jīng)修改而發(fā)送給瀏覽器
復(fù)合類型:array object
? array(數(shù)組)
array 為數(shù)組變量,可以是二維、三維或者多維數(shù)組,其中的元素也很自由,可以是 string、integer 或者 double,甚至是 array。
可以用 array() 語言結(jié)構(gòu)來新建一個(gè) array。它接受一定數(shù)量用逗號(hào)分隔的 key => value 參數(shù)對(duì)。
key 只能是整數(shù)和字符串
$a = array( 1 => 'one', 2 => 'two', 3 => 'three' );
$a = array( 'one', 'two', 'three' );默認(rèn)下標(biāo)是從0開始
$MyArray1 = array("a", "b", "c", "d");//一維數(shù)組
$MyArray2 = array(
"地支" => array("子", "丑", "寅", "卯"),
"生肖" => array("鼠", "牛", "虎", "兔"),
"數(shù)字" => array(1, 2, 3, 4)
); //二維數(shù)組
$arr = array(12 => true,"foo" => "bar", false);
echo $arr["foo"]; // bar
echo $arr[12]; // 1
?>
結(jié)果:bar1
$MyArray1 = array("a", "b", "c", "d");
echo $MyArray1[1];
print_r($MyArray1);
?>
結(jié)果:b(索引值從0開始)
數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換:
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
允許的強(qiáng)制轉(zhuǎn)換有:
?
?
?
?
?
? (int),(integer) - 轉(zhuǎn)換成整型 (bool),(boolean) - 轉(zhuǎn)換成布爾型 (float),(double),(real) - 轉(zhuǎn)換成浮點(diǎn)型 (string) - 轉(zhuǎn)換成字符串 (array) - 轉(zhuǎn)換成數(shù)組 (object) - 轉(zhuǎn)換成對(duì)象
強(qiáng)制類型強(qiáng)制轉(zhuǎn)換 (參考:PHP手冊(cè))
PHP 中的類型強(qiáng)制轉(zhuǎn)換和 C 中的非常像:在要轉(zhuǎn)換的變量之前加上用括號(hào)括起來的目標(biāo)類型。 允許的強(qiáng)制轉(zhuǎn)換有:
? (int),(integer) - 轉(zhuǎn)換成整型
? (bool),(boolean) - 轉(zhuǎn)換成布爾型
? (float),(double),(real) - 轉(zhuǎn)換成浮點(diǎn)型
? (string) - 轉(zhuǎn)換成字符串
? (array) - 轉(zhuǎn)換成數(shù)組
? (object) - 轉(zhuǎn)換成對(duì)象
注意在括號(hào)內(nèi)允許有空格和制表符
還可以用settype ( mixed var, string type )進(jìn)行強(qiáng)制轉(zhuǎn)換.
1.強(qiáng)制轉(zhuǎn)換為布爾值 (bool)|(boolean)
要明示地將一個(gè)值轉(zhuǎn)換成 boolean,用 (bool) 或者 (boolean) 來強(qiáng)制轉(zhuǎn)換。但是很多情況下不需要用強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符,函數(shù)或者流程控制需要一個(gè) boolean 參數(shù)時(shí),該值會(huì)被自動(dòng)轉(zhuǎn)換。
當(dāng)轉(zhuǎn)換為 boolean 時(shí),以下值被認(rèn)為是 FALSE:
布爾值 FALSE
整型值 0(零)
浮點(diǎn)型值 0.0(零)
空白字符串和字符串 "0"
沒有成員變量的數(shù)組
沒有單元的對(duì)象(僅適用于 PHP 4)
特殊類型 NULL(包括尚未設(shè)定的變量)
所有其它值都被認(rèn)為是 TRUE(包括任何資源)。
要明示地將一個(gè)值轉(zhuǎn)換為 integer,用 (int) 或 (integer) 強(qiáng)制轉(zhuǎn)換。不過大多數(shù)情況下都不需要強(qiáng)制轉(zhuǎn)換,因?yàn)楫?dāng)運(yùn)算符,函數(shù)或流程控制需要一個(gè) integer 參數(shù)時(shí),值會(huì)自動(dòng)轉(zhuǎn)換。還可以通過函數(shù) intval() 來將一個(gè)值轉(zhuǎn)換成整型。
a.從bool轉(zhuǎn)換
b.從浮點(diǎn)數(shù)轉(zhuǎn)換 取整,超出范圍,結(jié)果不定
c.從字符串轉(zhuǎn)換 參看字符串轉(zhuǎn)換為數(shù)值
d.從其它類型轉(zhuǎn)換 先換成 bool值,再轉(zhuǎn)換
決不要將未知的分?jǐn)?shù)強(qiáng)制轉(zhuǎn)換為 integer,這樣有時(shí)會(huì)導(dǎo)致意外的結(jié)果。
echo (int) ( (0.1+0.7) * 10 ); // 顯示 7
?>
$str = "123.456abc7"; // (int)123
echo (int)$str;
$str = "abc123.456"; // (int)0
$str = true; // (int)1
$str = false; // (int)0
3.強(qiáng)制轉(zhuǎn)換為浮點(diǎn)型 (int)|(double)|(real)|doubleval()|floatval()|intval()
精度: 0.12345678901234 // double,real都一樣
數(shù)據(jù)的丟失參 字符串轉(zhuǎn)換為數(shù)值
4.強(qiáng)制換為字符串 (string) |strval()
可以用 (string) 標(biāo)記或者 strval() 函數(shù)將一個(gè)值轉(zhuǎn)換為字符串。當(dāng)某表達(dá)式需要字符串時(shí),字符串的轉(zhuǎn)換會(huì)在表達(dá)式范圍內(nèi)自動(dòng)完成。例如當(dāng)使用 echo() 或者 print() 函數(shù)時(shí),或者將一個(gè)變量值與一個(gè)字符串進(jìn)行比較的時(shí)候。
? 布爾值 TRUE 將被轉(zhuǎn)換為字符串 "1",而值 FALSE 將被表示為 ""(即空字符串)。這樣就可
以隨意地在布爾值和字符串之間進(jìn)行比較。
? 整數(shù)或浮點(diǎn)數(shù)數(shù)值在轉(zhuǎn)換成字符串時(shí),字符串由表示這些數(shù)值的數(shù)字字符組成(浮點(diǎn)數(shù)還包含有
指數(shù)部分)。
? 數(shù)組將被轉(zhuǎn)換成字符串 "Array",因此無法通過 echo() 或者 print() 函數(shù)來輸出數(shù)組的內(nèi)容。
請(qǐng)參考下文以獲取更多提示。
? 對(duì)象將被轉(zhuǎn)換成字符串 "Object"。如果因?yàn)檎{(diào)試需要,需要將對(duì)象的成員變量打印出來,請(qǐng)閱
讀下文。如果希望得到該對(duì)象所依附的類的名稱,請(qǐng)使用函數(shù) get_class()。自 PHP 5 起,如果合適可以用 __toString() 方法。
? 資源類型總是以 "Resource id #1" 的格式被轉(zhuǎn)換成字符串,其中 1 是 PHP 在運(yùn)行時(shí)給資源
指定的唯一標(biāo)識(shí)。如果希望獲取資源的類型,請(qǐng)使用函數(shù) get_resource_type()。
? NULL 將被轉(zhuǎn)換成空字符串。
正如以上所示,將數(shù)組、對(duì)象或者資源打印出來,并不能提供任何關(guān)于這些值本身的有用的信息。請(qǐng)參閱函數(shù) print_r() 和 var_dump(),對(duì)于調(diào)試來說,這些是更好的打印值的方法。
可以將 PHP 的值轉(zhuǎn)換為字符串以永久地儲(chǔ)存它們。這種方法被稱為序列化,可以用函數(shù) serialize() 來完成該操作。如果在安裝 PHP 時(shí)建立了 WDDX 支持,還可以將 PHP 的值序列化為 XML 結(jié)構(gòu)。
4. 強(qiáng)制轉(zhuǎn)換為數(shù)組 (array)
? 對(duì)于任何的類型:整型、浮點(diǎn)、字符串、布爾和資源,如果將一個(gè)值轉(zhuǎn)換為數(shù)組,將得到一個(gè)僅
有一個(gè)元素的數(shù)組(其下標(biāo)為 0),該元素即為此標(biāo)量的值。
? 如果將一個(gè)對(duì)象轉(zhuǎn)換成一個(gè)數(shù)組,所得到的數(shù)組的元素為該對(duì)象的屬性(成員變量),其鍵名為
成員變量名。
? 如果將一個(gè) NULL 值轉(zhuǎn)換成數(shù)組,將得到一個(gè)空數(shù)組。
5. 轉(zhuǎn)換為對(duì)象 (object)
如果將一個(gè)對(duì)象轉(zhuǎn)換成對(duì)象,它將不會(huì)有任何變化。如果其它任何類型的值被轉(zhuǎn)換成對(duì)象,內(nèi)置類
stdClass 的一個(gè)實(shí)例將被建立。如果該值為 NULL,則新的實(shí)例為空。數(shù)組轉(zhuǎn)換成對(duì)象將使鍵名成為屬性名并具有相對(duì)應(yīng)的值。對(duì)于任何其它的值,名為 scalar 的成員變量將包含該值
6. 轉(zhuǎn)換為資源 (無法轉(zhuǎn)換)
由于資源類型變量保存有為打開文件、數(shù)據(jù)庫連接、圖形畫布區(qū)域等的特殊句柄,因此無法將其它類型的值轉(zhuǎn)換為資源。
■PHP 類型比較表(看手冊(cè)附錄P)
以下的表格顯示了 PHP 類型和比較運(yùn)算符在松散和嚴(yán)格比較時(shí)的作用。該補(bǔ)充材料還和類型戲法的相關(guān)章節(jié)內(nèi)容有關(guān)。
? 注意
?
? HTML 表單并不傳遞整數(shù)、浮點(diǎn)數(shù)或者布爾值,它們只傳遞字符串。要想檢測(cè)一個(gè)字符串是不是數(shù)字,可以使用 is_numeric() 函數(shù)。 在沒有定義變量 $x 的時(shí)候,諸如 if ($x) 的用法會(huì)導(dǎo)致一個(gè) E_NOTICE 級(jí)別的錯(cuò)
誤。所以,可以考慮用 empty() 或者 isset() 函數(shù)來初始化變量。
PHP常量
常量:
合法的常量名以字母(由大寫字母組成和C語言一樣)或下劃線開始,后面跟著任何字母,數(shù)字或下劃線。
常量和變量不同:
常量前面沒有美元符號(hào)($);
? 常量只能用 define() 函數(shù)定義,而不能通過賦值語句;
? 常量可以不用理會(huì)變量范圍的規(guī)則而在任何地方定義和訪問;
? 常量一旦定義就不能被重新定義或者取消定義; ?
常量只能包含標(biāo)量數(shù)據(jù)(boolean,integer,float 和 string)。 常量的范圍是全局的。不用管作用域就可以在腳本的任何地方訪問常量 define() 的功能可以讓我們自行定義所需要的常量。見下例
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>
PHP變量
變量:
變量用一個(gè)美元符號(hào)($)后面跟變量名來表示。變量名是區(qū)分大小寫的。 一個(gè)有效的變量名由字母或者下劃線開頭,后面跟上任意數(shù)量的字母,數(shù)字或
下劃線。
PHP 是一門松散類型的語言(Loosely Typed Language)
在 PHP 中,不需要在設(shè)置變量之前聲明該變量。
在上面的例子中,您看到了,不必向 PHP 聲明該變量的數(shù)據(jù)類型。
根據(jù)變量被設(shè)置的方式,PHP 會(huì)自動(dòng)地把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型。
在強(qiáng)類型的編程語言中,您必須在使用前聲明變量的類型和名稱。
在 PHP 中,變量會(huì)在使用時(shí)被自動(dòng)聲明。
可變變量(variable variable):
$$a = '張三';?>
這個(gè)代碼等價(jià)于:$name = 張三;
$a = "Hello"; $$a = "world";
echo "$a, $hello"; // Hello, world echo "$a, {$a}"; // 也是 Hello, world ?>
變量范圍(作用域):
作用域是指在一個(gè)腳本中某個(gè)變量在哪些地方可以使用或可見。 全局變量(global variable):
$a = 1;$b = 2;
function Sum(){
global $a, $b; $b = $a + $b; } Sum(); echo $b; ?> 輸出是’3’
局部變量(local variable):任何用于函數(shù)內(nèi)部的變量將被限制在局部函數(shù)范圍內(nèi)。
$a = 1; /* global scope */ function Test(){
($a = 2 ;)
echo $a; /* reference to local scope variable */ } Test(); ?> 什么也不輸出
靜態(tài)變量(static variable):在函數(shù)退出時(shí), 這個(gè)變量始終存在,不被銷毀, 但不能被其它函數(shù)使用, 當(dāng)再次進(jìn)入該函數(shù)時(shí), 將保存上次的結(jié)果。
// 靜態(tài)變量的例子 function myfunc() { static $mystr; $mystr.="哈"; echo $mystr."
\n"; }
myfunc(); // 哈 myfunc(); // 哈哈 myfunc(); // 哈哈哈 ?>
PHP運(yùn)算符
使用操作符:操作符是用來對(duì)數(shù)值和變量進(jìn)行某種操作運(yùn)算的符號(hào)。 學(xué)過的兩個(gè)操作符:賦值操作符(=)和字符串連接操作符(.)。 算數(shù)操作符:
(“/”)總是返回浮點(diǎn)數(shù),即使兩個(gè)運(yùn)算數(shù)是整數(shù)(或由字符串轉(zhuǎn)換成的整數(shù))也是這樣。
注: 取模 $a % $b 在 $a 為負(fù)值時(shí)的結(jié)果也是負(fù)值。
echo $a+$b."
\n"; echo $a-$b."
\n"; echo $a*$b."
\n"; echo $a/$b."
\n"; echo $a%$c."
\n"; ?>
注意:(*)作為乘法操作符,而不是常規(guī)的乘法符號(hào)。除法操作符同理。
字符串運(yùn)算符:
有兩個(gè)字符串運(yùn)算符。第一個(gè)是連接運(yùn)算符(“.”),它返回其左右參數(shù)連接后的字符串。第二個(gè)是連接賦值運(yùn)算符(“.=”),它將右邊參數(shù)附加到左邊的參數(shù)后。
$a = "Hello ";
$b = $a . "World!"; // now $b contains "Hello World!"
$a = "Hello ";
$a .= "World!"; // now $a contains "Hello World!" ?>
賦值運(yùn)算符:
基本的賦值運(yùn)算符是“=”。一開始可能會(huì)以為它是“等于”,其實(shí)不是的。它實(shí)際上意味著把右邊表達(dá)式的值賦給左邊的運(yùn)算數(shù)。
賦值運(yùn)算表達(dá)式的值也就是所賦的值。也就是說,“$a = 3”的值是 3。
$a = ($b = 4) + 5; // $a 現(xiàn)在成了 9,而 $b 成了 4。 ?>
括號(hào)提高子表達(dá)式的優(yōu)先級(jí)
復(fù)合賦值操作符:
增加程序的執(zhí)行效率。
$a += 2; // 即 $a = $a + 2; echo $a."
\n"; $b = "哇";
$b .= "哈"; // $b = "哇哈"; $b .= "哈"; // $b = "哇哈哈"; echo "$b
\n"; ?>
遞增/遞減運(yùn)算符:
注: 遞增/遞減運(yùn)算符不影響布爾值。遞減 NULL 值也沒有效果,但是遞增 NULL 的結(jié)果是 1。注意字符變量只能遞增,不能遞減。
比較運(yùn)算符: 比較兩個(gè)值。根據(jù)比較結(jié)果返回: false。 比較運(yùn)算符: 比較兩個(gè)值。根據(jù)比較結(jié)果返回:true 或 false。例子名稱結(jié)果 TRUE,如果 $a 等于 $b。 TRUE TRUE,如果 $a 不等于 $b。 TRUE TRUE,如果 $a 不等于 $b。 TRUE TRUE,如果 $a 嚴(yán)格小于 $b。 TRUE- 16 -$a == $b 等于 $a != $b 不等 $a <> $b 不等 $a < $b 小與
例子名稱結(jié)果 TRUE,如果 $a 嚴(yán)格 $b。 TRUE$a > $b 大于$a <= $b 小于等于 TRUE TRUE,如果 $a 小于或者等于 $b。 $a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。 TRUE邏輯運(yùn)算符: 邏輯運(yùn)算符:例子名稱結(jié)果 TRUE,如果 $a 與 $b 都為 TRUE TRUE。 TRUE TRUE,如果 $a 或 $b 任一為 TRUE TRUE。 TRUE$a and $b And(邏輯與) $a or $b Or(邏輯或)$a xor $b Xor(邏輯異或) TRUE TRUE,如果 $a 或 $b 任一為 TRUE TRUE,但不同時(shí)是。 ! $a Not(邏輯非) TRUE,如果 $a 不為 TRUE TRUE。 TRUE TRUE,如果 $a 與 $b 都為 TRUE TRUE。 TRUE TRUE,如果 $a 或 $b 任一為 TRUE TRUE。 TRUE$a && $b And(邏輯與) $a || $b Or(邏輯或)“與”和“或”有兩種不同形式運(yùn)算符的原因是它們運(yùn)算的優(yōu)先級(jí)不同 - 17 -
PHP 語句條件判斷語句: 條件判斷語句: 第一種是只有用到 if 條件, 當(dāng)作單純的判斷。 解釋成 "若發(fā)生了某事則怎樣 處理"。 if (expr) { statement } 其中的 expr 為判斷的條件,通常都是用邏輯運(yùn)算符號(hào) (logical operators) 當(dāng)判斷 的條件。而 statement 為符合條件的執(zhí)行部分程序,若程序只有一行,可以省略大括 號(hào) {}。 范例:本例省略大括號(hào)。 范例:本例的執(zhí)行部分有三行,不可省略大括號(hào)。 第兩種是除了 if 之外,加上了 else 的條件,可解釋成 "若發(fā)生了某事則怎樣處理, 否則該如何解決"。范例:上面的例子來修改成更完整的處理。其中的 else 由于只有一行執(zhí)行的指令,因 此不用加上大括號(hào)。
} ?>如果當(dāng)前日期是周五,下面的.代碼將輸出 "周末愉快!",否則會(huì)輸出 "美好的一天!": 如果需要在條件成立或不成立時(shí)執(zhí)行多行代碼,應(yīng)該把這些代碼行包括在花括號(hào)中: 3
第三種就是遞歸的 if..else 循環(huán),通常用在多種決策判斷時(shí)。它將數(shù)個(gè) if..else 拿 來合并運(yùn)用處理。 直接看下面的例子 $b) { echo "a 比 b 大"; } elseif ($a == $b) { echo "a 等于 b"; } else { echo "a 比 b 小"; } ?> 上例只用二層的 if..else 循環(huán),用來比較 a 和 b 兩個(gè)變量。實(shí)際要使用這種遞歸 if..else 循環(huán)時(shí),請(qǐng)小心使用,因?yàn)樘鄬拥难h(huán)容易使設(shè)計(jì)的邏輯出問題,或者少 打了大括號(hào)等,都會(huì)造成程序出現(xiàn)莫名其妙的問題。如果當(dāng)前日期是周五,下面的例子會(huì)輸出 "周末愉快!",如果是周日,則輸出 "星期天愉快!",否則輸出 " 美好的一天!":
else echo "美好的一天!"; ?> do..while 是重復(fù)敘述的循環(huán),可以分成兩種模式。 最單純的就是只有 while 的循環(huán)。用來在指定的條件內(nèi),不斷地重覆指定的步驟。語 法如下 while (expr) { statement } 其中的 expr 為判斷的條件,通常都是用邏輯運(yùn)算符號(hào) (logical operators) 當(dāng)判斷 的條件。而 statement 為符合條件的執(zhí)行部分程序,若程序只有一行,可以省略大括 號(hào) {}。 下例很有趣,要電腦的瀏覽器出現(xiàn)十次 "以后不敢了" 的字符串,前面并加上數(shù)字,表 示說了第幾次不敢了。(感覺好像是 Web Server 做錯(cuò)事被處罰) while 可以不用大括號(hào)來包住執(zhí)行部分,而使用冒號(hào)加上 endwhile。見下例
endwhile; ?> 另外一種 do..while 循環(huán)則先執(zhí)行,再判斷是否要繼續(xù)執(zhí)行,也就是說循環(huán)至少執(zhí)行 一次, 有點(diǎn)像是先斬后奏的方法。 這種的循環(huán), 和單用 while 是不同的 (單用 while 是 先判斷再處理)。若讀者熟 Pascal 語言的話,會(huì)發(fā)現(xiàn) do..while 循環(huán)像是 Pascal 的 repeat..until 循環(huán)循環(huán)就單純只有一種,沒有變化,它的語法如下 for 循環(huán) for (expr1; expr2; expr3) { statement } 其中的 expr1 為條件的初始值。expr2 為判斷的條件,通常都是用邏輯運(yùn)算符號(hào) (logical operators) 當(dāng)判斷的條件。expr3 為執(zhí)行 statement 后要執(zhí)行的部份,用 來改變條件,供下次的循環(huán)判斷,如加一..等等。而 statement 為符合條件的執(zhí)行部 分程序,若程序只有一行,可以省略大括號(hào) {}。下例是用 for 循環(huán)寫的 "以后不敢了" 的例子,可以拿來和用 while 循環(huán)的比較。從上例中,可以很明顯的看到,用 for 和用 while 的不同。實(shí)際應(yīng)用上,若循環(huán)有初 始值,且都要累加(或累減),則使用 for 循環(huán)比用 while 循環(huán)好。例如將資料從數(shù)據(jù) 庫取出,可能用 for 循環(huán)會(huì)比用 while 循環(huán)適合?6
循環(huán),通常處理復(fù)合式的條件判斷,每個(gè)子條件,都是 case 指令部分。在實(shí) switch 循環(huán) 作上若使用許多類似的 if 指令,可以將它綜合成 switch 循環(huán)。 語法如下 switch (expr) { case expr1: statement1; break; case expr2: statement2; break; : : default: statementN; break; } 其中的 expr 條件,通常為變量名稱。而 case 后的 exprN,通常表示變量值。冒號(hào)后 則為符合該條件要執(zhí)行的部分。注意要用 break 跳離循環(huán)。
break; } ?> 很明顯的,上述的例子用 if 循環(huán)就很麻煩了。當(dāng)然在設(shè)計(jì)時(shí),要將出現(xiàn)機(jī)率最大的條 件放在最前面,最少出現(xiàn)的條件放在最后面,可以增加程序的執(zhí)行效率。上例由于每天 出現(xiàn)的機(jī)率相同,所以不用注意條件的順序.8
【PHP基本語法大全】相關(guān)文章: