4. 運(yùn)算符

基本概念

運(yùn)算符是配合一個(gè)或多個(gè)值來(lái)產(chǎn)生結(jié)果的東西。
例如數(shù)字 12,配合一個(gè)加號(hào) + ,就能得到結(jié)果 3 ,這里的加號(hào)就是一個(gè)運(yùn)算符。

這里還有一個(gè)概念就是表達(dá)式,所有能被進(jìn)行賦值的語(yǔ)句都可以算是一個(gè)表達(dá)式,看下面代碼:

$sum = 1 + 2;

代碼中的這一整行稱(chēng)之為語(yǔ)句,在這個(gè)實(shí)例中也可以叫賦值語(yǔ)句,一條語(yǔ)句通常用分號(hào)(;)結(jié)尾,而其中 1 + 2 便是一個(gè)表達(dá)式,而 表達(dá)式的目的是得到一個(gè)值

算術(shù)運(yùn)算符

// 定義變量
$a = 10;
$b = 5;

// 取反 結(jié)果為 -10
echo -$a;
// 多次取反 結(jié)果 10
echo -(-$a);

// 加減乘除 結(jié)果 20
echo $a + $b * $a / $b;

// 取模,也叫取余,獲取余數(shù) 結(jié)果 0
echo $a % $b;

// 次冪 求 $a 的 $b 次冪 結(jié)果 10 * 10 * 10 * 10 * 10 = 100000
echo $a ** $b;

除法運(yùn)算符通常會(huì)得到一個(gè)浮點(diǎn)數(shù)的值,除非兩個(gè)操作數(shù)剛好能整除。
取模運(yùn)算符在計(jì)算之前,會(huì)將操作數(shù)都轉(zhuǎn)成整數(shù)型,且結(jié)果的正負(fù)數(shù)是根據(jù)被除數(shù)(左邊的那個(gè))來(lái)決定。

賦值運(yùn)算符

參考:4.1 賦值運(yùn)算符

位運(yùn)算符

暫無(wú):2017-6-22 13:55:21

比較運(yùn)算符

參考:4.2 比較運(yùn)算符

三元運(yùn)算符

格式:(表達(dá)式1) ? (表達(dá)式2) : (表達(dá)式3)

例如:$str = true ? 'hello' : 'world';

說(shuō)明:如果 表達(dá)式1TRUE,則返回 表達(dá)式2 的結(jié)果,否則就返回 表達(dá)式3 的結(jié)果。

三元運(yùn)算符的計(jì)算方式是 從左至右,這在多個(gè)三元運(yùn)算符的嵌套中表現(xiàn)得很明顯。

三元運(yùn)算符也有簡(jiǎn)寫(xiě)方式。

格式:(表達(dá)式1) ?: (表達(dá)式2)

說(shuō)明:如果 表達(dá)式1TRUE,則返回 表達(dá)式1的結(jié)果,反之返回 表達(dá)式2 的結(jié)果。

錯(cuò)誤控制運(yùn)算符

錯(cuò)誤控制運(yùn)算符@,可以將其放在一個(gè)表達(dá)式前,意思是說(shuō)該表達(dá)式產(chǎn)生的任何錯(cuò)誤都將被忽略(同時(shí)返回0,非常適合應(yīng)用于邏輯運(yùn)算)。

執(zhí)行運(yùn)算符

PHP支持使用反引號(hào)(\` )表示的執(zhí)行運(yùn)算符,反引號(hào)里的內(nèi)容將會(huì)被當(dāng)做shell命令來(lái)執(zhí)行,使用反引號(hào)運(yùn)算符與使用shell_exec()函數(shù)的效果一樣。 但如果在激活了安全模式或關(guān)閉了shell_exec()`函數(shù)時(shí)是無(wú)效的。
反引號(hào)不能在雙引號(hào)字符串中使用。

$host = 'http://127.0.0.1';
echo `ping -n 3 {$host}`;

遞增/遞減運(yùn)算符

遞增運(yùn)算符(++):

$num = 5;
// 5
echo $num++;
// 7
echo ++$num;

遞增運(yùn)算符可以運(yùn)用在變量前面或后面,在前面的時(shí)候,表示立即將該變量的值加一,在后面的時(shí)候,表示下次再加。

遞減運(yùn)算符(--):

$num = 5;
// 5
echo $num--;
// 3
echo --$num;

用法與遞增一樣,區(qū)別只是一個(gè)加,一個(gè)減。

對(duì) NULL 執(zhí)行遞減沒(méi)有效果,遞增則返回 1
對(duì)純字母 String 執(zhí)行遞減沒(méi)有效果。
對(duì)合法數(shù)字型 String 執(zhí)行遞增或遞減之前會(huì)轉(zhuǎn)成數(shù)值型。
對(duì)其他四不像的 String 執(zhí)行遞增或遞減沒(méi)有效果。
對(duì) Boolean 執(zhí)行遞增或遞減沒(méi)有效果

邏輯運(yùn)算符

參考:4.3 邏輯運(yùn)算符

字符串運(yùn)算符

將多個(gè)字符串拼接在一起,通過(guò)小數(shù)點(diǎn)(.)來(lái)進(jìn)行,而小數(shù)點(diǎn)正是PHP里的字符串運(yùn)算符,也可以使用連接賦值運(yùn)算符(.=)。

$foo = 'hello';
$bar = 'world';
// hello world;
$foobar = $foo . ' ' . $bar;
// foo = helloworld
$foo .= $bar;

數(shù)組運(yùn)算符

數(shù)組與數(shù)組之間可以進(jìn)行比較,也可以聯(lián)合合并成一個(gè)。
聯(lián)合的時(shí)候,兩者如果有相同鍵名,則忽略后者取前者的。

// 定義數(shù)組
$foo = ['1' => 'php', 'b' => 'asp', 'c' => 468];
$bar = [1 => 'php', 'b' => 'asp', 'c' => '468'];

// 是否相等,需要成員個(gè)數(shù)相同、順序相同、鍵值相同
$foo == $bar;   // true
// 是否絕對(duì)相等、同上且鍵值類(lèi)型必須相同
$foo === $bar;  // false

// 是否不等、與是否相等相反
$foo != $bar;   // false
$foo <> $bar;   // false
// 是否絕對(duì)不等、與是否絕對(duì)相等相同
$foo !== $bar;  // true


// 定義數(shù)組
$foo = ['x' => 'mysql', 'y' => 'redis'];
$bar = ['x' => 'sqlserver', 'y' => 'mongodb', 'z' => 'memcache'];
/*
Array
(
    [x] => mysql
    [y] => redis
    [z] => memcache
)
*/
// 數(shù)組聯(lián)合
$foo + $bar;

類(lèi)型運(yùn)算符

PHP中判斷一個(gè)實(shí)例對(duì)象是否是另一個(gè)實(shí)例、類(lèi)、父類(lèi)、接口的實(shí)現(xiàn),可以用 instanceof 關(guān)鍵字,是則返回 TRUE,反之則返回 FALSE,如果要檢查的類(lèi)名不存在,也會(huì)返回 FALSE

// 普通檢查
class Foo{}
$foo = new Foo();
// true
$foo instanceof Foo;
// false
$foo instanceof stdClass;

// 繼承檢查
class Bar extends Foo{}
$bar = new Bar();
// true
$bar instanceof Bar;
// true
$bar instanceof Foo;

// 接口檢查
interface Face{};
class Foobar implements Face{};
$foobar = new Foobar();
// true
$foobar instanceof Foobar;
// true
$foobar instanceof Face;

// 類(lèi)名可以是變量
$className = 'Foobar';
// true
$foobar instanceof $className;

// 類(lèi)名也可以不存在
// false
$foobar instanceof PHP;

參考例子

例子1

// $x = TRUE
$x = TURE AND FALSE;
// $y = FALSE
$y = (TRUE AND FALSE);
// 這個(gè)例子的關(guān)鍵點(diǎn)是運(yùn)算符優(yōu)先級(jí)
// 因?yàn)?= 優(yōu)先級(jí)高于 AND ,所以$x = TRUE
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容