1.認(rèn)識(shí)PHP標(biāo)簽
PHP 腳本以 <?php 開始,以 ?> 結(jié)束
<?php
echo "歡迎學(xué)習(xí)PHP!";
echo "Welcome" ." to learn PHP!";
echo 1+2+3+4+5;
?>
注意:;號(hào)不能少而.英文點(diǎn)字符串拼接,echo關(guān)鍵字與字符串之間至少要有一個(gè)空格,echo是PHP中的輸出語句類似Java的println
2.創(chuàng)建(聲明)PHP變量,PHP 是一門弱類型語言
<?php
$z="Hello world!";
$x=5;
$y=10.5;
echo z;
echo x+y;
?>
● 變量以 $ 符號(hào)開始,后面跟著變量的名稱
● 變量名必須以字母或者下劃線字符開始
● 變量名只能包含字母數(shù)字字符以及下劃線(A-z、0-9 和 _ )
● 變量名不能包含空格
● 變量名是區(qū)分大小寫的($y 和 $Y 是兩個(gè)不同的變量)
在上面的實(shí)例中,我們注意到,不必向 PHP 聲明該變量的數(shù)據(jù)類型。
PHP 會(huì)根據(jù)變量的值,自動(dòng)把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型。
在強(qiáng)類型的編程語言中,我們必須在使用變量前先聲明(定義)變量的類型和名稱。
3.PHP 變量作用域
變量的作用域是腳本中變量可被引用/使用的部分。
PHP 有四種不同的變量作用域:
● local //局部
● global //全局,調(diào)用全局所需關(guān)鍵字
● static //讓局部變量不隨函數(shù)調(diào)用完而銷毀的關(guān)鍵字
● parameter //參數(shù)變量
局部和全局作用域
在所有函數(shù)外部定義的變量,擁有全局作用域。除了函數(shù)外,全局變量可以被腳本中的任何部分訪問,要在一個(gè)函數(shù)中訪問一個(gè)全局變量,需要使用 global 關(guān)鍵字。
在 PHP 函數(shù)內(nèi)部聲明的變量是局部變量,僅能在函數(shù)內(nèi)部訪問:
<?php
$x=1; // 全局變量
function test()
{
$y=2; // 局部變量
echo "<p>測(cè)試函數(shù)內(nèi)接收的變量:<p>";
echo "變量x為: $x"; //輸出為空,要想輸出為1需呀用到global 關(guān)鍵字
echo "<br>";
echo "變量y為: $y"; //輸出為2
}
test();
echo "<p>測(cè)試函數(shù)外接收的變量:<p>";
echo "變量 x 為: $x"; //輸出為1
echo "<br>";
echo "變量 y 為: $y"; //輸出為空,無法調(diào)用局部變量
?>
PHP global 關(guān)鍵字
global 關(guān)鍵字用于函數(shù)內(nèi)訪問全局變量。
在函數(shù)內(nèi)調(diào)用函數(shù)外定義的全局變量,我們需要在函數(shù)中的變量前加上 global 關(guān)鍵字:
<?php
$x=1;
$y=1;
function test()
{
global $x,$y;
$y=$x+$y;
}
test();
echo $y; // 輸出 2
?>
PHP 將所有全局變量存儲(chǔ)在一個(gè)名為 $GLOBALS[index] 的數(shù)組中。 index 保存變量的名稱。這個(gè)數(shù)組可以在函數(shù)內(nèi)部訪問,也可以直接用來更新全局變量。
上面的實(shí)例可以寫成這樣:
<?php
$x=1;
$y=1;
function test()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
test();
echo $y; // 輸出 2
?>
Static 作用域
當(dāng)一個(gè)函數(shù)被調(diào)用完后,函數(shù)內(nèi)的所有變量通常都會(huì)被刪除。然而,有時(shí)候希望某個(gè)局部變量不要被刪除。
那么在第一次聲明的局部變量時(shí)使用 static 關(guān)鍵字如下:
<?php
function test()
{
static $x=0;
echo $x;
$x++;
echo "<br />";
}
test();
test();
test();//豎著輸出0 1 2,若不做疊加每次都會(huì)輸出0
?>
參數(shù)(parameter)作用域
參數(shù)是通過調(diào)用代碼將值傳遞給函數(shù)的局部變量。
參數(shù)是在參數(shù)列表中聲明的,作為函數(shù)聲明的一部分:
<?php
function test($x)
{
echo $x;
}
test(1);
?>
4.PHP echo 和 print 語句
在 PHP 中有兩個(gè)基本的輸出方式: echo 和 print。
echo 是一個(gè)語言結(jié)構(gòu),使用的時(shí)候可以不用加括號(hào),也可以加上括號(hào): echo 或 echo()。
print 同樣是一個(gè)語言結(jié)構(gòu),可以使用括號(hào),也可以不使用括號(hào): print 或 print()。
echo 和 print 區(qū)別:
● echo - 可以輸出一個(gè)或多個(gè)字符串
● print - 只允許輸出一個(gè)字符串,返回值總為 1
提示:echo屬于語句語法,print可以看做函數(shù),所以echo 輸出的速度比 print 快, echo 沒有返回值,print有返回值1。
例子:
<?php
echo "Hello world!<br>";
print "Hello world!<br>";
echo "這是一個(gè)", "字符串,", "使用了", "多個(gè)", "參數(shù)。" ,"<br>";
echo("這是一個(gè)"."字符串,"."使用了". "多個(gè)". "參數(shù)。"."<br>");
//print "這是一個(gè)", "字符串,", "使用了", "多個(gè)", "參數(shù)。";//解開后會(huì)報(bào)錯(cuò)
print("只能輸入一個(gè)字符串");
echo "<br>";
$txt1="學(xué)習(xí) PHP";
$txt2="自主";
$cars=array("蘭博基尼","瑪莎拉蒂","寶馬");
echo $txt1;
echo "<br>";
echo "$txt2 學(xué)習(xí) PHP <br>";
echo "我想要一臺(tái) {$cars[0]}跑車";
print "<br>";
print "<br>";
print $txt1 ;
print "<br>";
print "在 $txt2 學(xué)習(xí) PHP ";
print "<br>";
print "我想要一臺(tái) {$cars[1]}跑車";
?>
5.PHP 數(shù)據(jù)類型
String(字符串), Integer(整型), Float(浮點(diǎn)型), Boolean(布爾型), Array(數(shù)組), Object(對(duì)象), NULL(空值)。
PHP 字符串(String)
可以將任何文本放在單引號(hào)和雙引號(hào)中:
<?php $x = "Hello World!"; echo $x; echo "<br>"; $x = 'Hello World!'; echo $x; ?>
PHP 整型
整數(shù)是一個(gè)沒有小數(shù)的數(shù)字。
整數(shù)規(guī)則:
- 整數(shù)必須至少有一個(gè)數(shù)字 (0-9)
- 整數(shù)不能包含逗號(hào)或空格
- 整數(shù)是沒有小數(shù)點(diǎn)的
- 整數(shù)可以是正數(shù)或負(fù)數(shù)
- 整型可以用三種格式來指定:十進(jìn)制, 十六進(jìn)制( 以 0x 為前綴)或八進(jìn)制(前綴為 0)。
在以下實(shí)例中我們將測(cè)試不同的數(shù)字。 PHP var_dump() 函數(shù)返回變量的數(shù)據(jù)類型和值:
<?php
$x = 12580;
var_dump($x);
echo "<br>";
$x = -123; // 負(fù)數(shù)
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六進(jìn)制數(shù)
var_dump($x);
echo "<br>";
$x = 056; // 八進(jìn)制數(shù)
var_dump($x);
?>
PHP 浮點(diǎn)型
浮點(diǎn)數(shù)是帶小數(shù)部分的數(shù)字,或是指數(shù)形式。
在以下實(shí)例中我們將測(cè)試不同的數(shù)字。 PHP var_dump() 函數(shù)返回變量的數(shù)據(jù)類型和值:
<?php
$x = 10.24;
var_dump($x);
echo "<br>";
$x = 2.4e3;
var_dump($x);
echo "<br>";
$x = 8E-5;
var_dump($x);
?>
PHP 布爾型
布爾型可以是 TRUE 或 FALSE。
<?php
$x=true;
var_dump($x);
$y=false;
var_dump($y);
?>
PHP 數(shù)組(后面會(huì)有更詳細(xì)的介紹)
數(shù)組可以在一個(gè)變量中存儲(chǔ)多個(gè)值。
<?php
$cars=array("蘭博基尼","瑪莎拉蒂","寶馬");
var_dump($cars);
?>
PHP 對(duì)象
對(duì)象數(shù)據(jù)類型也可以用于存儲(chǔ)數(shù)據(jù)。
在 PHP 中,對(duì)象必須聲明。
首先,你必須使用class關(guān)鍵字聲明類對(duì)象。類是可以包含屬性和方法的結(jié)構(gòu)。
然后我們?cè)陬愔卸x數(shù)據(jù)類型,然后在實(shí)例化的類中使用數(shù)據(jù)類型:
<?php
class Car //創(chuàng)建一個(gè)汽車類
{
var $color;
function Car($color) {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function print_vars($obj) {
foreach (get_object_vars($obj) as $prop => $val) {//將對(duì)象轉(zhuǎn)換成對(duì)象值輸出
echo "\t$prop = $val\n";
}
}
// instantiate one object(實(shí)例化一個(gè)對(duì)象)
$myCar= new Car("white");
// show herbie properties(顯示herbie對(duì)象的屬性)
echo "我車子的顏色屬性:";
print_vars($myCar);
?>
PHP NULL 值
NULL 值表示變量沒有值。NULL 是數(shù)據(jù)類型為 NULL 的值。
NULL 值指明一個(gè)變量是否為空值。 同樣可用于數(shù)據(jù)空值和NULL值的區(qū)別。
可以通過設(shè)置變量值為 NULL 來清空變量數(shù)據(jù):
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
6.PHP 常量
常量是一個(gè)簡(jiǎn)單值的標(biāo)識(shí)符。該值在腳本中不能改變。
一個(gè)常量由英文字母、下劃線、和數(shù)字組成,但數(shù)字不能作為首字母出現(xiàn)。 (常量名不需要加 $ 修飾符)。
注意: 常量在整個(gè)腳本中都可以使用。
設(shè)置 PHP 常量
設(shè)置常量,使用 define() 函數(shù),函數(shù)語法如下:
define ( 常量名, 常量值, 布爾類型值(可選參數(shù),如果設(shè)置為 TRUE,該常量則大小寫不敏感。默認(rèn)是大小寫敏感的。))
<?php
// 區(qū)分大小寫的常量名
define("SHOW", "歡迎學(xué)習(xí)PHP");
echo SHOW; // 輸出 "歡迎學(xué)習(xí)PHP"
echo '<br>';
//echo show; // 解開后輸出 "show"報(bào)錯(cuò)
?>
<?php
// 不區(qū)分大小寫的常量名
define("SHOW", "歡迎學(xué)習(xí)PHP",true);
echo show; // 輸出 "歡迎學(xué)習(xí)PHP"
?>
常量是全局的
常量在定義后,默認(rèn)是全局變量,可以在整個(gè)運(yùn)行的腳本的任何地方使用。
以下實(shí)例演示了在函數(shù)內(nèi)使用常量,即便常量定義在函數(shù)外也可以正常使用常量。
<?php
define("SHOW", "歡迎學(xué)習(xí)PHP");
function test() { echo SHOW; } test(); // 輸出 "歡迎學(xué)習(xí)PHP"
?>
7.PHP 字符串
PHP 并置運(yùn)算符(字符串拼接符合)
在 PHP 中,只有一個(gè)字符串運(yùn)算符。
并置運(yùn)算符 (.) 用于把兩個(gè)字符串值連接起來,剛開始有提及到下面再復(fù)習(xí)下:
<?php
echo "Welcome" ." to learn PHP!";
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . $txt2;
?>
PHP strlen() 函數(shù)
strlen() 函數(shù)返回字符串的長(zhǎng)度(字符數(shù))。
<?php echo strlen("Hello world!"); //輸出12 ?>
提示:strlen() 常常用在循環(huán)和其他函數(shù)中,因?yàn)槟菚r(shí)確定字符串何時(shí)結(jié)束是很重要的。(例如,在循環(huán)中,我們需要在字符串中的最后一個(gè)字符之后結(jié)束循環(huán)。)
PHP strpos() 函數(shù)
strpos() 函數(shù)用于在字符串內(nèi)查找一個(gè)字符或一段指定的文本。
如果在字符串中找到匹配,該函數(shù)會(huì)返回第一個(gè)匹配的字符位置。如果未找到匹配,則返回 FALSE。
<?php
//在"Hello world!"中查找文本"world"
echo strpos("Hello world!","world"); //輸出:6
?>
提示:在上面的實(shí)例中,字符串 "world" 的位置是 6。之所以是 6 而不是 7 的原因是,字符串中第一個(gè)字符的位置是 0,而不是 1。
完整的 PHP String 參考手冊(cè)(知識(shí)拓展)
如需查看所有字符串函數(shù)的完整參考手冊(cè),請(qǐng)?jiān)L問菜鳥教程的 PHP String 參考手冊(cè)。
拓展:
<?php echo strlen("中文字符"); // 輸出 12,因?yàn)橐粋€(gè)中文占3個(gè)字符 ?>
<?php
//可以使用 mb_strlen 設(shè)置指定編碼輸出中文字符個(gè)數(shù)
echo mb_strlen("中文字符",'utf-8'); // 輸出 4
?>
8.PHP 數(shù)據(jù)類型的轉(zhuǎn)換
PHP是弱類型語言,因?yàn)樵谖覀兩昝饕粋€(gè)變量的時(shí)候,并不需要指明它保存的數(shù)據(jù)類型,但是PHP雖然是弱語言,但有時(shí)候仍然需要用到類型轉(zhuǎn)換。
PHP的數(shù)據(jù)類型轉(zhuǎn)換屬于強(qiáng)制轉(zhuǎn)換,允許轉(zhuǎn)換的PHP數(shù)據(jù)類型有:
- (int)、(integer):轉(zhuǎn)換成整形
- (float)、(double)、(real):轉(zhuǎn)換成浮點(diǎn)型
- (string):轉(zhuǎn)換成字符串
- (bool)、(boolean):轉(zhuǎn)換成布爾類型
- (array):轉(zhuǎn)換成數(shù)組
- (object):轉(zhuǎn)換成對(duì)象
PHP數(shù)據(jù)類型有三種轉(zhuǎn)換方式:
- 在要轉(zhuǎn)換的變量之前加上用括號(hào)括起來的目標(biāo)類型(強(qiáng)制轉(zhuǎn)換)
- 使用3個(gè)具體類型的轉(zhuǎn)換函數(shù),intval()、floatval()、strval()
- 使用通用類型轉(zhuǎn)換函數(shù)settype(mixed var,string type),
成功時(shí)返回 TRUE, 或者在失敗 時(shí)返回 FALSE。
第一種轉(zhuǎn)換方式: (int) (bool) (float) (string) (array) (object)
<?php
$num1=3.14;
$num2=(int)$num1;
$num3=(array)$num1;
$num4=(bool)$num1;
$num5=(string)$num1;
$num6=(object)$num1;
var_dump($num1); //輸出float(3.14)
echo '<br>';
var_dump($num2); //輸出int(3)
echo '<br>';
var_dump($num3);//輸出array (size=1) 0 => float 3.14
echo '<br>';
var_dump($num4);//輸出boolean true
echo '<br>';
var_dump($num5);//輸出string '3.14' (length=4)
echo '<br>';
var_dump($num6);//輸出object(stdClass)[2] public 'scalar' => float 3.14
echo '<br>';
?>
第二種轉(zhuǎn)換方式: intval() floatval() strval()
<?php
$str="123.9abc";
$int=intval($str); //轉(zhuǎn)換后數(shù)值:123
$float=floatval($str); //轉(zhuǎn)換后數(shù)值:123.9
$str=strval($float); //轉(zhuǎn)換后字符串:"123.9"
?>
第三種轉(zhuǎn)換方式: settype();
<?php
$num4=12.8;
$flg=settype($num4,"int");
var_dump($flg); //輸出bool(true)
var_dump($num4); //輸出int(12)
?>
PHP變量的數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換
PHP會(huì)自動(dòng)把變量轉(zhuǎn)換為自動(dòng)的數(shù)據(jù)類型
<?php
$string = "就是就是";
var_dump($string); //輸出string(就是就是)
$string = 9494;
var_dump($string); //輸出int(9494)
echo "<br />";
?>
8.PHP 運(yùn)算符
PHP 算術(shù)運(yùn)算符
加(+)、減(-)、乘(*)、除(/)、取余(%)
<?php $x=10; $y=6; echo ($x + $y); // 輸出16
echo '<br>'; // 換行
echo ($x - $y); // 輸出4
echo '<br>'; // 換行
echo ($x * $y); // 輸出60
echo '<br>'; // 換行
echo ($x / $y); // 輸出1.6666666666667
echo '<br>'; // 換行 echo ($x % $y); // 輸出余數(shù)4
echo '<br>'; // 換行
echo -$x;//輸出-6
?>
PHP7+ 版本新增整除運(yùn)算符 intdiv(),使用實(shí)例:
<?php var_dump(intdiv(10, 3));//輸出int(3) ?>
PHP 賦值運(yùn)算符
左操作數(shù)被設(shè)置為右側(cè)表達(dá)式的值
=、+=、-=、*=、/=、%=、 .=(除=號(hào)外,其他符號(hào)都是自身加、減、乘、除、取余、拼接另一個(gè)數(shù)再賦值給自身的變量)
<?php
$x=10;
echo $x; // 輸出10
$y=20;
$y += 100;
echo $y; // 輸出120
$z=50;
$z -= 25;
echo $z; // 輸出25
$i=5; $i *= 6;
echo $i; // 輸出30
$j=10; $j /= 5;
echo $j; // 輸出2
$k=15;
$k %= 4;
echo $k; // 輸出3
$x="Hello";
$x .= " world!";
echo $x; // 輸出Hello world!
?>
PHP 遞增/遞減運(yùn)算符
| 運(yùn)算符 | 名稱 | 描述 |
|---|---|---|
| ++ x | 預(yù)遞增 | x 加 1,然后返回 x |
| x ++ | 后遞增 | 返回 x,然后 x 加 1 |
| -- x | 預(yù)遞減 | x 減 1,然后返回 x |
| x -- | 后遞減 | 返回 x,然后 x 減 1 |
<?php
$x=10; echo ++$x; // 輸出11
$y=10; echo $y++; // 輸出10
$z=5; echo --$z; // 輸出4
$i=5; echo $i--; // 輸出5 ?>
PHP 比較運(yùn)算符
| 運(yùn)算符 | 名稱 | 描述 | 實(shí)例 |
|---|---|---|---|
| x == y | 等于 | 如果 x 等于 y,則返回 true | 5==8 返回 false |
| x === y | 絕對(duì)等于 | 如果 x 等于 y,且它們類型相同,則返回 true | 5==="5" 返回 false |
| x != y | 不等于 | 如果 x 不等于 y,則返回 true | 5!=8 返回 true |
| x <> y | 不等于 | 如果 x 不等于 y,則返回 true | 5<>8 返回 true |
| x !== y | 絕對(duì)不等于 | 如果 x 不等于 y,或它們類型不相同,則返回 true | 5!=="5" 返回 true |
| x > y | 大于 | 如果 x 大于 y,則返回 true | 5>8 返回 false |
| x < y | 小于 | 如果 x 小于 y,則返回 true | 5<8 返回 true |
| x >= y | 大于等于 | 如果 x 大于或者等于 y,則返回 true | 5>=8 返回 false |
| x <= y | 小于等于 | 如果 x 小于或者等于 y,則返回 true | 5<=8 返回 true |
<?php
$x=100;
$y="100";
var_dump($x == $y);
echo "<br>";
var_dump($x === $y);
echo "<br>";
var_dump($x != $y);
echo "<br>";
var_dump($x !== $y);
echo "<br>";
$a=50; $b=90;
var_dump($a > $b);
echo "<br>";
var_dump($a < $b);
?>
PHP 邏輯運(yùn)算符
| 運(yùn)算符 | 名稱 | 描述 | 實(shí)例 |
|---|---|---|---|
| x and y | 與 | 如果 x 和 y 都為 true,則返回 true | x=6,y=3 (x < 10 and y > 1) 返回 true |
| x or y | 或 | 如果 x 和 y 至少有一個(gè)為 true,則返回 true | x=6,y=3 (x==6 or y==5) 返回 true |
| x xor y | 異或 | 如果 x 和 y 有且僅有一個(gè)為 true,則返回 true | x=6,y=3 (x==6 xor y==3) 返回 false |
| x && y | 與 | 如果 x 和 y 都為 true,則返回 true | x=6,y=3(x < 10 && y > 1) 返回 true |
| x ‖ y() | 或 | 如果 x 和 y 至少有一個(gè)為 true,則返回 true | x=6,y=3(x==5 ‖ y==5) 返回 false |
| ! x | 非 | 如果 x 不為 true,則返回 true | x=6,y=3 |
| !(x==y) 返回 true |
三元運(yùn)算符
語法格式
(expr1) ? (expr2) : (expr3)
對(duì) expr1 求值為 TRUE 時(shí)的值為 expr2,在 expr1 求值為 FALSE 時(shí)的值為 expr3。
自 PHP 5.3 起,可以省略三元運(yùn)算符中間那部分。表達(dá)式 expr1 ?: expr3 在 expr1 求值為 TRUE 時(shí)返回 expr1,否則返回 expr3。
<?php
$test = '菜鳥教程';
// 普通寫法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;
// PHP 5.3+ 版本寫法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
?>
注意:PHP_EOL 是一個(gè)換行符,兼容更大平臺(tái)。
在 PHP7+ 版本多了一個(gè) NULL 合并運(yùn)算符 ??,實(shí)例如下:
<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否則返回 $_GET['user'] 的值 $username = $_GET['user'] ?? 'nobody';
// 類似的三元運(yùn)算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
組合比較符(PHP7+)
太空船操作符,即 <=>,又稱組合比較運(yùn)算符,結(jié)合比較運(yùn)算符。
語法是這樣的:$c = $a <=> $b;
這句代碼的意思是
- 如果$a > $b, $c 的值為1
- 如果$a == $b, $c 的值為0
- 如果$a < $b, $c 的值為-1
<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮點(diǎn)型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
拓展:在沒有太空船運(yùn)算符的時(shí)候,我們只能這樣寫代碼:
$c = $a > $b ? 1 : ( $a==$b ? 0 : -1 );
運(yùn)算符優(yōu)先級(jí)
下表按照優(yōu)先級(jí)從高到低列出了運(yùn)算符。同一行中的運(yùn)算符具有相同優(yōu)先級(jí),此時(shí)它們的結(jié)合方向決定求值順序。
運(yùn)算符優(yōu)先級(jí)指定了兩個(gè)表達(dá)式綁定得有多“緊密”。例如,表達(dá)式 1 + 5 * 3 的結(jié)果是 16 而不是 18 是因?yàn)槌颂?hào)(“*”)的優(yōu)先級(jí)比加號(hào)(“+”)高。必要時(shí)可以用括號(hào)來強(qiáng)制改變優(yōu)先級(jí)。例如:(1 + 5) * 3 的值為 18。
如果運(yùn)算符優(yōu)先級(jí)相同,那運(yùn)算符的結(jié)合方向決定了該如何運(yùn)算。例如,"-"是左聯(lián)的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且結(jié)果是 -4. 另外一方面,"="是右聯(lián)的,所以 $a = $b = $c 等同于 $a = ($b = $c)。
沒有結(jié)合的相同優(yōu)先級(jí)的運(yùn)算符不能連在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表達(dá)式 1 <= 1 == 1是合法的, 因?yàn)?== 的優(yōu)先級(jí)低于 <=。
| 結(jié)合方向 | 運(yùn)算符 | 附加信息 |
|---|---|---|
| 無 | clone new | clone 和 new |
| 左 | [ | array() |
| 右 | ++ — ~ (int) (float) (string) (array) (object) (bool) @ | 類型和遞增/遞減 |
| 無 | instanceof | 類型 |
| 右 | ! | 邏輯運(yùn)算符 |
| 左 | * / % | 算術(shù)運(yùn)算符 |
| 左 | + – . | 算術(shù)運(yùn)算符和字符串運(yùn)算符 |
| 左 | << >> | 位運(yùn)算符 |
| 無 | == != === !== <> | 比較運(yùn)算符 |
| 左 | & | 位運(yùn)算符和引用 |
| 左 | ^ | 位運(yùn)算符 |
| 左 | 丨 | 位運(yùn)算符 |
| 左 | && | 邏輯運(yùn)算符 |
| 左 | ‖ | 邏輯運(yùn)算符 |
| 左 | ? : | 三元運(yùn)算符 |
| 右 | = += -= *= /= .= %= &= 丨= ^= <<= >>= => | 賦值運(yùn)算符 |
| 左 | and | 邏輯運(yùn)算符 |
| 左 | xor | 邏輯運(yùn)算符 |
| 左 | or | 邏輯運(yùn)算符 |
| 左 | , | 多處用到 |
運(yùn)算符優(yōu)先級(jí)中,or 和 ||,&& 和 and 都是邏輯運(yùn)算符,效果一樣,但是其優(yōu)先級(jí)卻不一樣。
<?php
// 優(yōu)先級(jí): && > = > and
// 優(yōu)先級(jí): || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 這里的 $c 為 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d); //這里的 $d 就是 boolean 值 true
?>
括號(hào)的使用
上面已提過使用括號(hào)來強(qiáng)制改變優(yōu)先級(jí),我們通過括號(hào)的配對(duì)來明確標(biāo)明運(yùn)算順序,而非靠運(yùn)算符優(yōu)先級(jí)和結(jié)合性來決定,通常能夠增加代碼的可讀性。
<?php
// 括號(hào)優(yōu)先運(yùn)算
$a = 1; $b = 2; $c = 3; $d = $a + $b * $c;
echo $d; //輸出為7 echo "\n"; $e = ($a + $b) * $c; // 使用括號(hào)輸出為9
echo $e;
echo "\n";
?>
聲明:自學(xué)PHP大部分參考http://www.runoob.com/php/php-tutorial.html寫出,以后發(fā)表的PHP基礎(chǔ)知識(shí)文章也將會(huì)繼續(xù)參考上方網(wǎng)址而寫!但還是有點(diǎn)區(qū)別的基礎(chǔ)部分重要的我會(huì)詳細(xì)寫出,希望大家喜歡我寫的文章。