PHP中的運算符類型:
1.算術運算符
2.遞增/遞減運算符
3.比較運算符
4.邏輯運算符
5.位運算符
6.其他運算符
算術運算符:無非加減乘除,不多說。
遞增/遞減運算符:跟python一樣,$a++、++$a、$a--、--$a。
比較運算符:>、<、>=、<=、<>、!=、==、!==、===。
邏輯運算符:&&或and(邏輯且)、||或or(邏輯或)、!或not(邏輯非)、xor(邏輯異或,當左
右表達式有且僅有一個爲真是是TRUE,其他情況均爲假)。
位運算符(位運算進行的運算都是對於補碼的運算):
1:& 按位與 有一位爲0即爲0。左右兩邊的數,同位都爲1返回1,否則返回02: | 按位或 有一位爲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,如果有不對的地方,歡迎大家指正!