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 相关文章推荐
动态生成gif格式的图像要注意?
Oct 09 PHP
php 中include()与require()的对比
Oct 09 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
php事件驱动化设计详解
2016/11/10 PHP
jQuery 位置插件
2008/12/25 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
分析js闭包引起的事件注册问题
2016/03/29 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
vue实现添加与删除图书功能
2018/10/07 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
佳能德国网上商店:Canon德国
2017/03/18 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
后勤主管工作职责
2013/12/07 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
小学生自我评价范文
2014/01/25 职场文书
优秀部门获奖感言
2014/02/14 职场文书
百家讲坛观后感
2015/06/12 职场文书
工作感言一句话
2015/08/01 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
golang使用map实现去除重复数组
2022/04/14 Golang
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers