运算符 - PHP手册笔记
2015-06-19 11:23
239 查看
原文:运算符 - PHP手册笔记
运算符拥有不同的优先级和结合方向。
在需要的时候使用括号,可以增强代码的可读性。
赋值运算符将原变量的值拷贝到新变量中,有个例外就是碰到对象时,是以引用赋值的,除非明确使用
new运算符自动返回一个引用。
向任何方向移出去的位都被丢弃。
左移时以零填充,且正负号不被保留。
右移时以符号位填充,意味着正负号保留。
这一节的重点就是把手册重点的几个示例程序看懂吧。示例中字符串的XOR运算比较难理解,这个以后再看。还有整数的位移,感觉理解就好吧。
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。
自PHP 5.3起,可以省略三元运算符中间那部分。表达式
不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。
反引号运算符在激活了安全模式或者关闭了
注意!反引号不能在双引号字符串中使用。
递减NULL值也没有效果,但是递增NULL的结果是1。
在处理字符变量的算术运算时,PHP沿袭了Perl的习惯,而非C的。例如,在Perl中
注意!字符变量只能递增,不能递减,并且只支持纯字母(a-z和A-Z)。递增/递减其他字符字符变量则无效,原字符串没有变化。
相等:
全等:
不等:
不全等:
数组中的单元如果具有相同的键名和值则比较时相等,不要在意顺序和类型。
输出结果如下所示。
注意,
(全文完)
运算符优先级
每种编程语言都有运算符,运算符要学会灵活使用。运算符拥有不同的优先级和结合方向。
<?php var_dump(1 <= 1 == 1); // true var_dump(true ? 0 : true ? 1 : 2); // 2 $a = 1; var_dump(++$a + $a++); // may print 4 or 5
在需要的时候使用括号,可以增强代码的可读性。
算术运算符
取模运算符的结果和被除数的符号相同。赋值运算符将原变量的值拷贝到新变量中,有个例外就是碰到对象时,是以引用赋值的,除非明确使用
clone关键字来拷贝。
new运算符自动返回一个引用。
位运算符
位移有一下几个规律:向任何方向移出去的位都被丢弃。
左移时以零填充,且正负号不被保留。
右移时以符号位填充,意味着正负号保留。
这一节的重点就是把手册重点的几个示例程序看懂吧。示例中字符串的XOR运算比较难理解,这个以后再看。还有整数的位移,感觉理解就好吧。
比较运算符
普通等号==只需类型转换后两值相等就返回真。
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。
<?php var_dump(0 == "a"); // true var_dump("1" == "01"); // true var_dump("10" == "1e1"); // true
自PHP 5.3起,可以省略三元运算符中间那部分。表达式
expr1 ?: expr3在expr1真时返回expr1,否则返回expr3。三元运算符是从左往右计算的。
错误控制运算符
PHP支持一个错误控制运算符@,@运算符只对表达式有效。将其放在表达式前,该表达式可能产生的任何错误信息都被忽略掉。不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。
执行运算符
PHP支持一个执行运算符:反引号,就是键盘左上角那个。效果与函数shell_exec()相同。
<?php $output = `systeminfo`; $outip = shell_exec('ipconfig'); echo "<pre>$outip</pre>"; echo "<pre>$output</pre>";
反引号运算符在激活了安全模式或者关闭了
shell_exec()时是无效的。
注意!反引号不能在双引号字符串中使用。
递增递减运算符
递增/递减运算符不影响布尔值。递减NULL值也没有效果,但是递增NULL的结果是1。
在处理字符变量的算术运算时,PHP沿袭了Perl的习惯,而非C的。例如,在Perl中
$a = 'Z'; $a++;将把$a变成'AA'。
注意!字符变量只能递增,不能递减,并且只支持纯字母(a-z和A-Z)。递增/递减其他字符字符变量则无效,原字符串没有变化。
<?php $z = 'z'; $Z = 'Z'; var_dump(++$z); // 'aa' var_dump(++$Z); // 'AA'
逻辑运算符
||比
or的优先级高。
&&比
and的优先级高。
字符串运算符
第一个是连接运算符.,第二个是连接赋值运算符
.=。
数组运算符
联合:$a + $b。把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,有变动额被忽略。
相等:
$a == $b。具有相同的键值对。
全等:
$a === $b。具有相同的键值对,并且顺序和类型都相同。
不等:
$a != $b或
$a <> $b。
不全等:
$a !== $b。
数组中的单元如果具有相同的键名和值则比较时相等,不要在意顺序和类型。
<?php $a = array("apple", "banana"); $b = array(1 => "banana", "0" => "apple"); var_dump($a); var_dump($b); var_dump($a == $b); var_dump($a === $b);
输出结果如下所示。
array (size=2) 0 => string 'apple' (length=5) 1 => string 'banana' (length=6) array (size=2) 1 => string 'banana' (length=6) 0 => string 'apple' (length=5) boolean true boolean false
类型运算符
PHP中有一个类型运算符instanceof,用于确定一个PHP变量是否属于某一类的实例。
<?php class MyParent {} class MyClass extends MyParent {} class NotMyClass {} interface MyInterface {} class InClass implements MyInterface {} $a = new MyClass; var_dump($a instanceof MyClass); // true var_dump($a instanceof NotMyClass); // false var_dump($a instanceof MyParent); // true $b = new InClass; var_dump($b instanceof MyInterface); // true $c = 'InClass'; var_dump($b instanceof $c); // true var_dump($c instanceof stdClass); // false
注意,
instanceof不允许用来检测常量。
(全文完)
相关文章推荐
- PHP实现中文圆形印章特效
- PHP学习之[第06讲]数组、多维数组和数组函数
- Cannot modify header information - headers already sent by (output started at D:\PHP\xampp\htdocs\
- PHP 常用的header头部定义汇总
- PHP实现获取中英文首字母
- php学习路线
- php---算法
- 常用的php图片处理类(水印、等比缩放、固定高宽)分享
- 利用phpexcel把excel导入数据库和数据库导出excel实现
- getParameter
- php打造智能化的柱状图程序,用于报表等
- Windows 7 默认情况下没有 tftp 和 telnet 命令.
- PHP学习之[第05讲]PHP5.4 循环结构、系统函数和自定义函数
- php 函数调用的几种方式
- 常量 - PHP手册笔记
- 变量 - PHP手册笔记
- php实现通过ftp上传文件
- 彻底理解PHP的SESSION机制
- php结合正则获取字符串中数字
- laravel5安装 数据库配置 模板 路由