【小白筆記】PHP學習之路 (5) --運算符

PHP中的運算符類型:

1.算術運算符

2.遞增/遞減運算符

3.比較運算符

4.邏輯運算符

5.位運算符

6.其他運算符

算術運算符:無非加減乘除,不多說。

遞增/遞減運算符:跟python一樣,$a++、++$a、$a--、--$a。

比較運算符:>、<、>=、<=、<>、!=、==、!==、===。

邏輯運算符:&&and(邏輯且)||or(邏輯或)!not(邏輯非)、xor(邏輯異或,當左

右表達式有且僅有一個爲真是是TRUE,其他情況均爲假)

位運算符(位運算進行的運算都是對於補碼的運算):

1:&    按位與    有一位爲0即爲0。左右兩邊的數,同位都爲1返回1,否則返回0
2: |    按位或     有一位爲1即爲1。只有當同位都爲0時返回0,否則返回1
3:^    按位異或      相同爲假,不同爲真。只有當同位不同時返回1,否則返回0
4:~    按位非(取反) 將位中的0變爲1,1變爲0
位移運算符:
5:<<   左移   將左邊數的二進制左移右邊數指定數量的位,右邊空位補0
6:>>   右移   將左邊數的二進制右移右邊數指定數量的位,左邊空位補0

示例:

<?php
	$a = 5;
	$b = 6;
	echo $a."  ".decbin($a)."<br/>";
	echo $b."  ".base_convert($b, 10, 2);
	echo "<br/>----------------------<br/>";
	echo "按位與: ",$a & $b,"  ", decbin($a&$b), "<br/>";
	echo "按位或: ",$a | $b,"  ", decbin($a|$b), "<br/>";
	echo "按位異或: ",$a ^ $b,"  ", decbin($a^$b), "<br/>";
	echo "按位非: ",~$a,"  ", decbin(~$a), "<br/>";
	echo "左移一位: ",$a << 1,"  ", decbin($a<<1), "<br/>";
	echo "右移一位: ",$a >> 1,"  ", decbin($a>>1), "<br/>";
?>

結果:

5  101
6  110
----------------------
按位與: 4  100
按位或: 7  111
按位異或: 3  11
按位非: -6  11111111111111111111111111111010
左移一位: 10  1010
右移一位: 2  10


連接運算符

     .  連接兩個參數生成新的字符串
     .=  把右邊的值追加到左邊的變量

賦值運算符

     =  把右邊值賦給左邊變量

禁止顯示警告信息

     @   函數、變量、常量前來禁止顯示警告信息,不可以放在條件語句結構中。一般放在有返回值的地方

三元表達式

     表達式1?表達式2:表達式3  若表達式1成立則返回表達式2,反之返回表達式3

例:

	$str1 = "google chrome";
	$rm = "bbs.rainmeter.cn";
	$str2 = "<h1>".$str1.$rm."</h1>"."-----------<br/>"; //全部拼在一起就是結果
	echo $str2;
	echo $str1.=" addedplus";  //結果:google chrome addedplus
	echo '--------------------------------';
	$a = 1;
	$a .= 2;
	echo $a; //此處發生類型轉換,結果當然是字符串12
	echo '--------------------------------';
	$file_name = "helo.txt"; //此處故意將hello.txt打錯
	$file = @fopen($file_name, 'r'); //可以將warning信息屏蔽,但錯誤依然存在,開發階段不建議這樣做
	$content = fread($file, filesize($file_name));
	echo $content; //warning報錯
	echo '--------------------------------';
	$t = 0;
	$msg = $t>0 ? 't大於0' : 't不大於0';
	$uname = isset($_GET['uname'])?$_GET['uname']:'未被定義';
	echo $uname;  //$uname之前未被定義,因此結果爲字符串

運算符的短路

&&   ||   存在短路特性
&     |    不存在短路

<?php
	$a = 1;
	$a==1 || $c=100;
	echo $c;  //結果爲空,因爲執行到$a==1時爲真,邏輯或必爲真,因此直接忽略後面的語句
	$a==2 && $d=200;
	echo $d;  //結果同樣爲空,原因同上
	$a==2 & $e=300;
	echo $e;  //結果:300
	$a==1 | $f=400;
	echo $f;  //結果:400
?>

利用運算符的短路,可以簡便地完成一些判斷結構:

	$file = @fopen('hello.txt', 'r') or die('文件不存在,a.txt必須存在'); //@屏蔽錯誤消息

如果文件存在,就將其打開;如果不存在,就顯示錯誤消息並終止腳本運行(這裏的die函數作用是輸出消息並終止腳本)。

簡單例子:

<?php
	$user_arr = array('admin', 'tt', 'sina', 'bbs');
	$upwd_arr = array('admin'=>'123456', 'tt'=>'555', 'sina'=>'888','bbs'=>'999');
	$uname = isset($_POST['uname'])?$_POST['uname']:'';
	$upwd = isset($_POST['upwd'])?$_POST['upwd']:'';
	if(in_array($uname,$user_arr)){
		if($upwd == $upwd_arr[$uname]){
			echo '登錄成功,現在轉入後臺操作頁面……';
			$ok = true;
		}else{
			echo('密碼錯誤');
		}
	}else{
		echo('用戶名不存在');
	}
?>
<html>
	<head>
		<title>Login</title>
	</head>	
	<body>
<?php
	if($ok){
		echo "歡迎進入後臺管理";
	}else{
?>
		<form action="" method="post">
			用戶名:<input type="text" name="uname"><br/>
			密碼:<input type="password" name="upwd"><br/>
			<input type="submit" value="登錄">
		</form>
	<?php }?>
	</body>
</html>


以上均爲個人理解,初學php,如果有不對的地方,歡迎大家指正!微笑

發佈了38 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章