PHP開發基礎教程之運算符

一、算數運算

算數運算符,其實就是小學的加減乘除:

5.png

實例:

<?php
//声明变量
$x = 16;
$y = 5;
//加
echo $x+$y;
echo "<br/>";
//减
echo $x-$y;
echo "<br/>";
//乘
echo $x*$y;
echo "<br/>";
//除
echo $x/$y;
echo "<br/>";
//取余
echo $x%$y;
echo "<br/>";
//综合运算
echo ($x+$y)*$x;
echo "<br/>";

?>

註:與我們數學所學一樣,也有優先順序:先乘除,後加減。如果你想更明確的改變優先級,那就用()【小括號】,將想要優先的值給括起來


#二、賦值運算

在數學裡面把= (一個等號)叫作賦值運算符,即:把等號右邊的值,賦值給等號左邊的變量,左邊的變數就為右邊的值。

程式碼是從上到下運行的,因此賦值就可以從上到下的反覆賦值:

實例:

<?php
//给变量赋不同的值,观察最后的输出结果
$x = 5;
$x = true;
$x = '爱你';
$x = 12.888;
echo $x;
?>

可以看出$x被反覆賦值,之後的賦值會覆寫前面賦的值。輸出的是最後一次的賦值。

PHP還有其他幾種擴充的賦值,都是從賦值(=)演變來的

6.png


三、自加,自減運算

自加自減,就是把自己加1,或減1。

7.png

來理解下上面這個表格

$x++和++$x的差別,實例:

<?php
$x = 5;
$y = 5;
//先赋值后加:即先将$x的值赋值给$z。$x的值为5,所以将$x的值赋值给$z,$z也为5
//之后$x再自己加一
$z = $x++;
//先将$y自加1,$y等于5,自加1后结果为6。因此,$y的结果为6
//自加后,再将结果6偷偷的赋值给自己$w
$w = ++$y;

echo 'x的值为'.$x;
echo "<br/>";
echo 'y的值为'.$y;
echo "<br/>";
echo 'z的值为'.$z;
echo "<br/>";
echo 'w的值为'.$w;
echo "<br/>";
?>

註:大家可以動手試試$x--和--$x之間的差異


#四、比較運算

##PHP的比較運算子可以比較兩個數值,比較之後傳回的是布林值true 或false:8.png

##來看看範例

實例:

<?php
$x=2;
$y=4;
var_dump($x>$y);
echo "<br/>";
var_dump($x<$y);
?>

上面幾個都是普通的,容易造成理解混亂有兩個==和===

== 等於

##== = 全等於,也叫做判斷型別等於

我們來看一個例子:

實例

<?php
$x=3;
$y="3";
var_dump($x==$y);
echo "<br/>";
var_dump($x===$y);
?>

從上面的例子可以看出==比較的是左右兩個數字的值是不是相等,===更為嚴格點,不僅比較值是否相等,還比較了型別是否相等。

註:! =(不等於)和! ==(全不等)也是同理,大家可以嘗試輸出看看


五、邏輯運算

邏輯運算子比較簡單,是我們人類進行邏輯思考時的一種方式

假設$x為條件一,$y為條件二

  •  邏輯與:中文解釋為並且,即當$ x且$y都為真(true)時,返回真(true)其餘情況都會回傳假(false)

  •  邏輯或:中文解釋為或。即當,$x或$y其中一個為真(true)的時候,返回真(true),兩個都為假(false)時,返回假(false)

  •  邏輯非:中文解釋取反。如果$x的執為假(false),進行一次非操作。非假(false)就為真了,就可以回傳真(true)。反推true,則回傳假(false)了。

  •  邏輯異或:若$x和$y相同則為false,則不相同則為true

具體見下表

9.png

來看看範例:

<?php
$x=1;
$y=0;
var_dump($x&&$y);
echo "<br/>";
var_dump($x||$y);
echo "<br/>";
var_dump(!$x);
echo "<br/>";
var_dump($x xor $y);
echo "<br/>";
?>

#六、位元運算

位元運算子即依照二進位的為諸位進行邏輯比較

10.png

實例:

<?php
//$x二进制值为:0101
$x = 5;
//$y二进制值为:1000
$y = 8;
//0101与1000诸位进行与运算,两个都是1个则为1,其他都为0
//     0101
//     1000
//————————————
//结果 0000
var_dump($x & $y);
?>

註:實例只列舉了一個,其他各位如果有興趣的話,可以自己嘗試輸出,看看結果和自己預想的一樣不


#七、運算子優先權

本章的學習等級為了解等級。

因為絕大多數人都不會去記運算子的優先順序。

我們在小學的時候,優先順序是先乘除後加減。想要改變運算的優先權加括號即可。

重點:不用記優先級,確定不了的時候號上括號把優先級標出來即可

註:各位如果有興趣的話,可以翻看PHP手冊,上面有詳細的優先權描述


八、三元運算子和其它運算子

還有一些特殊的運算子和符號,我們再來進行講解。或許以後我們需要用到

11.png

1.三元運算子

相當我們下一章要學習的if.. .else結構。不過三元運算子的寫法更簡潔,語法格式如下:

判斷$x是否為真? 為真執行的程式碼片段(只能寫一句程式碼):為假執行的程式碼片段(只能寫一句程式碼);

實例:

<?php
$x = true;
$x ? $y = 5 : $y = 6;
//输出5
echo  $y;
?>

2.反引號

我們常常需要顯示IP位址,在PHP裡面可不可能顯示我們windows的IP位址呢?用反引號,就可以執行我們的命令(不過有些虛擬伺服器是禁止執行這些的命令腳本的):

源碼:

<?php
echo '<pre>';
echo `ipconfig`;
echo '</pre>';
?>

輸出結果:

12.png

##註:反引號在鍵盤左上角,Tab鍵的上方

#3.@符號

單行抑制錯誤,以後的章節我們也會講解到

實例,原始碼如下:

<?php
//打开一个不存在的文件adfsafasdfasfasdfdsadf.txt,你运行一下会发现报错了。
//再前面再加上一个@符看看效果
$fp = fopen('adfsafasdfasfasdfdsadf.txt','r');

//fp = fopen('adfsafasdfasfasdfdsadf.txt','r');

?>

輸出:

13.png

加上@之後

<?php
//打开一个不存在的文件adfsafasdfasfasdfdsadf.txt,你运行一下会发现报错了。
//再前面再加上一个@符看看效果
//$fp = fopen('adfsafasdfasfasdfdsadf.txt','r');

@$fp = fopen('adfsafasdfasfasdfdsadf.txt','r');

?>

沒有輸出,警告也沒有,可見@符號抑制了錯誤

繼續學習
||
<?php //声明变量 $x = 16; $y = 5; //加 echo $x+$y; echo "<br/>"; //减 echo $x-$y; echo "<br/>"; //乘 echo $x*$y; echo "<br/>"; //除 echo $x/$y; echo "<br/>"; //取余 echo $x%$y; echo "<br/>"; //综合运算 echo ($x+$y)*$x; echo "<br/>"; ?>
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!