Linux 版 (精华区)

发信人: tcpip (偶的昵称改了), 信区: Linux
标  题: php3表达式
发信站: 紫 丁 香 (Wed Jan 19 01:14:15 2000) WWW-POST

表达式 
  表达式是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。 
 

--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;

※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: 202.118.244.244] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.249毫秒