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,如果有不对的地方,欢迎大家指正!