PHP学习之PHP表达式


Posted in PHP onOctober 09, 2006

PHP表达式

表达式是PHP最重要的组成元素。在PHP 3.0中,几乎你所写的任何东西都是表达式。表达式的最简单但精确的定义是"有一个值的任何东西"。

一个简单的例子是常量和变量。
当你写 "$a = 5"时, 你给 $a 赋了值 '5' 。 (在这种情况下, '5' 是一个整形常量)。 在此,你是希望把 $a 赋值成 5。所以写 $b = $a 时,你希望的结果就是 $b = 5 。即 $a 是一个值为 5 的表达式。

复杂表达式的简单例子是函数。
比如说,考虑以下函数:

 function foo()

{

 return 5;

}


如果你认为写$c = foo()实际上和写 $c = 5是一样的,那么你是对的。函数是值为其返回值的表达式。因为foo() 返回5, 所以表达式 'foo()'的值是 5 。


PHP的值当然不限于整形,且通常都不是。PHP支持三类值的类型: 整形值,浮点值和字符串值。PHP 支持两种混合类型(non-scalar): 数组和对象。这两种类型的值可以赋给变量或从函数中返回。


PHP 3是一种面向表达式的语言, 所以几乎所有东西都是表达式。
考虑我们已经讨论的例子, '$a = 5'。很容易看出这里有两个值,整形常量 '5'的值,和也被赋为 5 的变量 $a 的值。但是这里实际上还有一个附加的值,就是赋值语句本身的值。
赋值语句本身的值就是被赋给的值,本例中是 5. 事实上,它意味着不考虑 '$a = 5'要做什么,它是一个值为 5 的表达式。这样,写诸如 '$b = ($a = 5)'的语句,就象 '$a = 5; $b = 5;' (每条语句末尾有一个分号)。因为赋值的顺序是从右向左的你也可以写成 '$b = $a = 5'。

表达式计算方向的另一个好例子是先加、后加及先减、后减。PHP/FI和多数其他语言的用户可能很熟悉 variable++ 和 variable--。这是自加和自减操作。在 PHP/FI 2 中,语句 '$a++' 没有值(它不是表达式), 这样你就既不能赋值给它也不能通过任何办法使用它。PHP 3 把它们变成了和 C 中一样的表达式从而增强了自加和自减运算的能力。
和 C 中类似,PHP 3中也有两种类型的自加----先加和后加。先加和后加的本质都是变量自加,对于变量本身的作用是一样的。不同点是自加表达式的值。形如 '++$variable'的先加, 计算变量自加后的值(PHP先做变量自加,再读取它的值,也就叫做 '先加').形如'$variable++'的后加, 则先计算原始变量$variable的值,然后才进行自加 (PHP在读取变量的值后再做自加,因此叫做'后加').


最常见的表达式是比较表达式。这种表达式计算结果是 0 或 1,分别意味着 FALSE 或是 TRUE。
PHP 支持 > (大于), >= (大于等于), == (等于), < (小于) 及 <= (小于等于)。这种表达式通常用在条件执行里 , 例如 IF 语句。


在这里我们最后要讨论的表达式是混合赋值表达式。你已经知道如果要使 $a 加一,你可以简单的写一句 '$a++' 或者 '++$a'。但是如果要增加的值比1大怎么办呢,例如使它加 3 ? 你可以多写几次'$a++' ,但这 显然不是一种高效或令人乐于接受的办法。另外一个通常的办法是写 '$a = $a + 3'。先计算'$a + 3' 的值,在赋回到 $a, 这样 $a 就加上 3 了。在PHP 3 中,你可以象在其他几种语言(例如 C)一样把它简写,这样更清晰、快洁易懂。 把当前变量 $a 加 3 可以写成 '$a += 3'。这句话的意思是 "取出 $a 的值, 把它加 3 , 在赋给 $a"。这除了使得语句简短、清晰,还使它执行的更快。表达式 '$a += 3'的值,和一个严格的赋值语句一样,是所赋的值。注意:不是 3, 而是 $a 加 3 的值(这才是赋给$a 的)。任何的双操作符 可以被用于这种赋值操作模式,例如 '$a -= 5' (变量 $a 减去 5 ), '$b *= 7' ( 变量 $b 乘以 7),等等。


最后值得提到的是表达式的真值。很多时候(主要是在条件执行和循环时),你并不关心表达式的特定值 , 而只是注意它代表TRUE 还是 FALSE (PHP 没有专用的布尔类型)。PHP中使用类似perl的方法计算表达式的真值。任何非零的值为 TRUE,零为 FALSE 。请一定注意负零的值是非零值,并被视为 TRUE ! 空字符串可 字符串 "0" 为 FALSE; 所其他的字符串为 TRUE 。对于非数量值(数组和对象) - 如果它的值不含任何元素为 FALSE, 否则为 TRUE。

PHP 相关文章推荐
PHP与SQL注入攻击[一]
Apr 17 PHP
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
基于php无限分类的深入理解
Jun 02 PHP
php求数组全排列,元素所有组合的方法
May 05 PHP
php简单实现批量上传图片的方法
May 09 PHP
CodeIgniter生成静态页的方法
May 17 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
Thinkphp3.2实用篇之计算型验证码示例
Feb 09 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
php注册审核重点解析(数据访问)
May 23 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 PHP
聊天室php&amp;mysql(三)
Oct 09 #PHP
PHP学习之PHP运算符
Oct 09 #PHP
PHP学习之PHP变量
Oct 09 #PHP
php的控制语句
Oct 09 #PHP
PHP4 与 MySQL 交互使用
Oct 09 #PHP
Access数据库导入Mysql的方法之一
Oct 09 #PHP
做一个有下拉功能的留言版
Oct 09 #PHP
You might like
PHP n个不重复的随机数生成代码
2009/06/23 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
Node.js 基础教程之全局对象
2017/08/06 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
python中的随机函数小结
2018/01/27 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Django框架模板用法入门教程
2019/11/04 Python
python画图常规设置方式
2020/03/05 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
会计毕业生求职简历的自我评价
2013/10/20 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书