摘要:
算术运算符还记得学校里学到的基本数学知识吗?就和它们一样。表格 10-2. 算术运算符例子 名称 结果 $a + $b 加法 $a 和 $b 的和。 $a - $b 减法 $a 和 $b 的差。 $a * $b 乘法 $a 和 $b 的积。 $a / $b 除法 $a 除以 $b 的商。 $a % $b 取模 $a 除以 $b 的余数。除号(“/”)总是返回浮点数,即使两个运算数是整数(或由字符串转换成的整数)也是这样。请查阅手册“数学函数”有关章节。 阅读全文
posted @ 2011-10-25 16:46
南山砍柴的
阅读(312)
评论(0)
推荐(0)
摘要:
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。如果激活了 track_errors 特性,表达式所产生的任何错误信息都被存放在变量 $php_errormsg 中。此变量在每次出错时都会被覆盖,所以如果想用它的话就要尽早检查。<?php/* Intentional file error */$my_file = @file ('non_existent_file') or die ("Failed opening file: error was '$php_errormsg'& 阅读全文
posted @ 2011-10-25 16:45
南山砍柴的
阅读(263)
评论(0)
推荐(0)
摘要:
PHP 支持 C 风格的前/后加一与减一运算符。表格 10-5. 加一/减一运算符例子 名称 效果 ++$a 前加 $a 的值加一,然后返回 $a。 $a++ 后加 返回 $a,然后将 $a 的值加一。 --$a 前减 $a 的值减一, 然后返回 $a。 $a-- 后减 返回 $a,然后将 $a 的值减一。一个简单的示例脚本:<?phpecho "<h3>Postincrement</h3>";$a = 5;echo "Should be 5: " . $a++ . "<br />\n";ec 阅读全文
posted @ 2011-10-25 16:43
南山砍柴的
阅读(368)
评论(0)
推荐(0)
摘要:
PHP 仅有的一个数组运算符是 + 运算符。它把右边的数组附加到左边的数组后,但是重复的键值不会被覆盖。$a = array("a" => "apple", "b" => "banana");$b = array("a" =>"pear", "b" => "strawberry", "c" => "cherry");$c = $a + $b;var_dump($c); 阅读全文
posted @ 2011-10-25 16:41
南山砍柴的
阅读(230)
评论(0)
推荐(0)
摘要:
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。用正则表达式是这样表达的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*注: 在这里,字母是 a-z,A-Z,以及从 127 到 255(0x7f-0xff)的 ASCII 字符。和 superglobals 一样,常量的范围是全局的。不用管作用域就可以在脚本的任何地方访问常量 阅读全文
posted @ 2011-10-25 16:35
南山砍柴的
阅读(193)
评论(0)
推荐(0)
摘要:
PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。有四个魔术常量根据它们使用的位置而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:表格 8-1. 几个 PHP 的“魔术常量”名称 说明 __LINE__ 文件中的当前行号。 __FILE__ 文件的完整路径和文件名。 __FUNCTION__ 函数名称(这是 PHP 4.3.0 新加的)。 __CLASS__ 类的名称(这是 PHP 4.3.0 新加的)。 __METHOD_ 阅读全文
posted @ 2011-10-25 16:35
南山砍柴的
阅读(272)
评论(0)
推荐(0)
摘要:
HTML 表单(GET 和 POST)当一个表单体交给 PHP 脚本时,表单中的信息会自动在脚本中可用。有很多方法访问此信息,例如:例子 7-8. 一个简单的 HTML 表单<form action="foo.php" method="POST"> Name: <input type="text" name="username"><br> Email: <input type="text" name="email"><br 阅读全文
posted @ 2011-10-25 16:34
南山砍柴的
阅读(269)
评论(0)
推荐(0)
摘要:
有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:<?php$a = "hello";?>一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中 hello 使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。例如:<?php$$a = "world";?>这时,两个变量都被定义了:$a 的内容是“hello”并且 $hello 的内容是“world”。因此,可以表述为:<?phpecho "$a ${$a}"; 阅读全文
posted @ 2011-10-25 16:33
南山砍柴的
阅读(225)
评论(0)
推荐(0)
摘要:
变量的范围即它定义的上下文背景(译者:说白了,也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。范例:<?php$a = 1;include "b.inc";?>这里变量 $a 将会在包含文件 b.inc 中生效。但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。范例:<?php$a = 1; /* global scope */function Test(){ echo $a; /* reference 阅读全文
posted @ 2011-10-25 16:30
南山砍柴的
阅读(376)
评论(0)
推荐(0)
摘要:
PHP 提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档。一些预定义变量在 PHP 以命令行形式运行时并不生效。有关这些变量的详细列表,请参阅“保留的预定义变量”一章。警告 PHP 4.2.0 以及后续版本中,PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,你将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替 $ 阅读全文
posted @ 2011-10-25 16:24
南山砍柴的
阅读(383)
评论(0)
推荐(0)
摘要:
基础PHP 中一个美元符号后面跟上一个变量名称,即表示一个变量。变量的名称是对大小写敏感的。变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'注: 字母为 a-z,A-Z,ASCII 字符从 127 到 255(0x7f-0xff)。<?php$var = "Bob";$Var = "Joe";echo "$var, $Var 阅读全文
posted @ 2011-10-25 16:23
南山砍柴的
阅读(130)
评论(0)
推荐(0)
摘要:
PHP 在变量定义中不需要(或不支持)明示的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果你把一个字符串值赋给变量 var,var 就成了一个字符串。如果你又把一个整型值赋给 var,那它就成了一个整数。PHP 的自动类型转换的一个例子是加号“+”。如果任何一个运算数是浮点数,则所有的运算数都被当成浮点数,结果也是浮点数。否则运算数会被解释为整数,结果也是整数。注意这并没有改变这些运算数本身的类型;改变的仅是这些运算数如何被求值。<?php$foo = "0"; // $foo is string (ASCII 48)$foo += 2; // $ 阅读全文
posted @ 2011-10-25 16:22
南山砍柴的
阅读(120)
评论(0)
推荐(0)
摘要:
mixedmixed 说明一个参数可以接受多种不同的(但并不必须是所有的)类型。gettype() 表明可以接受所有的 PHP 类型,例如 str_replace() 将接受字符串和数组。numbernumber 说明一个参数可以是 integer 或者 float。callback有些诸如 call_user_function() 或 usort() 的函数接受用户自定义的函数作为一个参数。Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。一个 PHP 函数用函数名字符串来传递。您可以传递任何内建的或者用户自定义的函数,除了 array(), ech 阅读全文
posted @ 2011-10-25 16:17
南山砍柴的
阅读(117)
评论(0)
推荐(0)
摘要:
特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。注: NULL 类型是 PHP 4 引进的。在下列情况下一个变量被认为是 NULL:被赋值为 NULL。尚未被赋值。被 unset()。语法NULL 类型只有一个值,就是大小写敏感的关键字 NULL。<?php$var = NULL;?>参见 is_null() 和 unset()。 is_null(PHP 4 >= 4.0.4)is_null -- 检测变量是否为 NULL 描述bool is_null ( mixed var)如果 var 是 null 则返回 TRUE,否则返回 FALSE 阅读全文
posted @ 2011-10-25 16:16
南山砍柴的
阅读(734)
评论(0)
推荐(0)
摘要:
永久的数据库连接是指在您的脚本结束运行时不关闭的连接。当收到一个永久连接的请求时。PHP 将检查是否已经存在一个(前面已经开启的)相同的永久连接。如果存在,将直接使用这个连接;如果不存在,则建立一个新的连接。所谓“相同”的连接是指用相同的用户名和密码到相同主机的连接。对 WEB 服务器的工作和分布负载没有完全理解的读者可能会错误地理解永久连接的作用。特别的,永久连接不会在相同的连接上为您提供建立“用户会话”的能力,也不提供有效建立事务的能力。实际上,从严格意义上来讲,永久连接不会给您提供任何非永久连接无法提供的特殊功能。为什么?这和 WEB 服务器工作的方式有关。您的 WEB 服务器可以用三种 阅读全文
posted @ 2011-10-25 16:14
南山砍柴的
阅读(293)
评论(0)
推荐(0)
摘要:
一个资源是一个特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。所有这些函数及其相应资源类型见附录。注: 资源类型是 PHP 4 引进的。转换为资源由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,您无法将其它类型的值转换为资源。释放资源由于 PHP4 Zend 引擎引进了资源计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。由此原因,很少需要用某些 free-result 函数来手工释放内存。注: 持久数据库连接比较特殊,它们不会被垃圾回收系统破坏。参见数据库永久连接一章 阅读全文
posted @ 2011-10-25 16:14
南山砍柴的
阅读(120)
评论(0)
推荐(0)
摘要:
对象初始化要初始化一个对象,用 new 语句将对象实例到一个变量中。<?phpclass foo{ function do_foo() { echo "Doing foo."; }}$bar = new foo;$bar->do_foo();?>完整的讨论见类与对象一章。转换为对象如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。对于任何其它的值,名为scalar 的成员变量将包含该值。<?php$obj = (object) ' 阅读全文
posted @ 2011-10-25 16:12
南山砍柴的
阅读(108)
评论(0)
推荐(0)
摘要:
PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,因此你可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树。解释这些结构超出了本手册的范围,但对于每种结构你至少会发现一个例子。要得到这些结构的更多信息,我们建议你参考有关此广阔主题的外部著作。语法定义 array()可以用 array() 语言结构来新建一个 array。它接受一定数量用逗号分隔的 key => value 参数对。array( [key =&g 阅读全文
posted @ 2011-10-25 16:10
南山砍柴的
阅读(191)
评论(0)
推荐(0)
摘要:
字符串string 是一系列字符。在 PHP 中,字符和字节一样,也就是说,一共有 256 种不同字符的可能性。这也暗示 PHP 对 Unicode 没有本地支持。请参阅函数 utf8_encode() 和 utf8_decode() 以了解有关 Unicode 支持。注: 一个字符串变得非常巨大也没有问题,PHP 没有给字符串的大小强加实现范围,所以完全没有理由担心长字符串。语法字符串可以用三种字面上的方法定义。单引号双引号定界符单引号指定一个简单字符串的最简单的方法是用单引号(字符 ')括起来。要表示一个单引号,需要用反斜线(\)转义,和很多其它语言一样。如果在单引号之前或字符串结 阅读全文
posted @ 2011-10-25 16:09
南山砍柴的
阅读(202)
评论(0)
推荐(0)
摘要:
浮点型浮点数(也叫“floats”,“doubles”或“real numbers”)可以用以下任何语法定义:<?php$a = 1.234;$a = 1.2e3;$a = 7E-10;?>形式上:LNUM [0-9]+DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。浮点数精度 显然简单的十进制分数如同 0.1 或 0.7 阅读全文
posted @ 2011-10-25 16:07
南山砍柴的
阅读(263)
评论(0)
推荐(0)
摘要:
整型一个 integer 是集合 Z = {..., -2, -1, 0, 1, 2, ...} 中的一个数。参见任意长度整数 / GMP,浮点数 和 任意精度数学库 / BCMath。语法整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)。如果用八进制符号,数字前必须加上 0(零),用十六进制符号数字前必须加上 0x。 例子 6-1. 整数文字表达<?php$a = 1234; # 十进制数$a = -123; # 一个负数$a = 0123; # 八进制数(等于十进制的 83)$a = 0x1A; # 十六进制数(等于十进制的 26)?> 在字 阅读全文
posted @ 2011-10-25 16:06
南山砍柴的
阅读(187)
评论(0)
推荐(0)
摘要:
布尔型这是最简单的类型。boolean 表达了真值,可以为 TRUE 或 FALSE。注: 布尔类型是 PHP 4 引进的。语法要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都是大小写不敏感的。<?php$foo = True; // assign the value TRUE to $foo?>通常你用某些运算符返回 boolean 值,并将其传递给流程控制。// == is an operator which test// equality and returns a booleanif ($action == "show_version") 阅读全文
posted @ 2011-10-25 16:05
南山砍柴的
阅读(387)
评论(0)
推荐(0)
摘要:
介绍PHP 支持八种原始类型。四种标量类型:布尔型(boolean)整型(integer)浮点型(float)(浮点数,也作“double”)字符串(string)两种复合类型:数组(array)对象(object)最后是两种特殊类型:资源(resource)NULL为了确保代码的易读性,本手册还介绍了一些伪类型:混和(mixed)数字(number)回馈(callback)您可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的 阅读全文
posted @ 2011-10-25 16:04
南山砍柴的
阅读(234)
评论(0)
推荐(0)
摘要:
你可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。语法如下:<?phpfunction foo (&$var){ $var++;}$a=5;foo ($a);// $a is 6 here?>注意在函数调用时没有引用符号 - 只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。以下内容可以通过引用传递:变量,例如 foo($a)New 语句,例如 foo(new foobar())从函数中返回的引用,例如:<?phpfunction &bar(){ $a = 5; return $a;}foo(bar());?>详细解释见引 阅读全文
posted @ 2011-10-25 16:00
南山砍柴的
阅读(136)
评论(0)
推荐(0)
摘要:
当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:<?php$a = 1;$b =& $a;unset ($a);?>不会 unset $b,只是 $a。再拿这个和 Unix 的 unlink 调用来类比一下可能有助于理解。引用定位许多 PHP 的语法结构是通过引用机制实现的,所以上述有关引用绑定的一切也都适用于这些结构。一些结构,例如引用传递和返回,已经在上面提到了。其它使用引用的结构有:global 引用当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:<?p 阅读全文
posted @ 2011-10-25 16:00
南山砍柴的
阅读(129)
评论(0)
推荐(0)
摘要:
引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接。引用做什么PHP 的引用允许你用两个变量来指向同一个内容。意思是,当你这样做时:<?php$a =& $b?>这意味着 $a 和 $b 指向了同一个变量。 注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 阅读全文
posted @ 2011-10-25 15:58
南山砍柴的
阅读(299)
评论(0)
推荐(0)
摘要:
警告 本扩展模块是实验性的。该模块的行为,包括其函数的名称以及其它任何关于此模块的文档可能会在没有通知的情况下随 PHP 以后的发布而改变。我们提醒您在使用本扩展模块的同时自担风险。 在 PHP 5 中,对象的比较比在 PHP 4 中更复杂,也比我们就某一面向对象语言期望的要多 (尽管 PHP 5 不是一种面向对象语言)。当使用比较操作符(==)时,对象以一种很简单的规则比较:当两个对象有相同的属性和值,属于同一个类且被定义在相同的命名空间中,则两个对象相等。另一方面,当使用全等符(===)时,当且仅当两个对象指向相同类(在某一特定的命名空间中)的同一个对象时才相等。以下范例将阐明该规则。 例 阅读全文
posted @ 2011-10-25 15:05
南山砍柴的
阅读(120)
评论(0)
推荐(0)
摘要:
在 PHP 4 中,对象比较的规则十分简单:如果两个对象的类相同,且它们有相同的属性和值,则这两个对象相等。类似的规则还适用与用全等符(===)对两个对象的比较。如果我们执行以下范例中的代码: If we were to execute the code in the example below: 例子 13-1. PHP 4 中对象比较范例<?phpfunction bool2str($bool) { if ($bool === false) { return 'FALSE'; } else { return 'TRUE'; }}function com 阅读全文
posted @ 2011-10-25 15:03
南山砍柴的
阅读(155)
评论(0)
推荐(0)
摘要:
在构造函数中创建引用可能会导致混淆的结果。本节以教程形式帮助避免问题。<?phpclass Foo{ function Foo($name) { // 在全局数组 $globalref 中建立一个引用 global $globalref; $globalref[] = &$this; // 将名字设定为传递的值 $this->setName($name); // 并输出之 $this->echoName(); } function echoName() { echo "<br>",$this->name; } function s 阅读全文
posted @ 2011-10-25 15:02
南山砍柴的
阅读(370)
评论(0)
推荐(0)
摘要:
魔术函数 __sleep 和 __wakeupserialize() 检查类中是否有魔术名称 __sleep 的函数。如果这样,该函数将在任何序列化之前运行。它可以清除对象并应该返回一个包含有该对象中应被序列化的所有变量名的数组。使用 __sleep 的目的是关闭对象可能具有的任何数据库连接,提交等待中的数据或进行类似的清除任务。此外,如果有非常大的对象而并不需要完全储存下来时此函数也很有用。相反地,unserialize() 检查具有魔术名称 __wakeup 的函数的存在。如果存在,此函数可以重建对象可能具有的任何资源。使用 __wakeup 的目的是重建在序列化中可能丢失的任何数据库连接 阅读全文
posted @ 2011-10-25 14:59
南山砍柴的
阅读(185)
评论(0)
推荐(0)
摘要:
注: 在 PHP 3 中,在序列化和解序列化的过程中对象会失去类的关联。结果的变量是对象类型,但是没有类和方法,因此就没什么用了(就好像一个用滑稽的语法定义的数组一样)。注意 以下信息仅在 PHP 4 中有效。 serialize() 返回一个字符串,包含着可以储存于 PHP 的任何值的字节流表示。unserialize() 可以用此字符串来重建原始的变量值。用序列化来保存对象可以保存对象中的所有变量。对象中的函数不会被保存,只有类的名称。要能够 unserialize() 一个对象,需要定义该对象的类。也就是,如果序列化了 page1.php 中类 A 的对象 $a,将得到一个指向类 A 的 阅读全文
posted @ 2011-10-25 14:57
南山砍柴的
阅读(171)
评论(0)
推荐(0)
摘要:
你可能会发现自己写的代码访问了基类的变量和函数。如果派生类非常精炼或者基类非常专业化的时候尤其是这样。不要用代码中基类文字上的名字,应该用特殊的名字 parent,它指的就是派生类在 extends 声明中所指的基类的名字。这样做可以避免在多个地方使用基类的名字。 如果继承树在实现的过程中要修改,只要简单地修改类中 extends 声明的部分。<?phpclass A{ function example() { echo "I am A::example() and provide basic functionality.<br>\n"; }}class 阅读全文
posted @ 2011-10-25 14:55
南山砍柴的
阅读(203)
评论(0)
推荐(0)
摘要:
注意 下列内容仅在 PHP 4 及以后版本中有效。 有时,在没有声明任何实例的情况下访问类中的函数或者基类中的函数和变量很有用处。而 :: 运算符即用于此情况。<?phpclass A{ function example() { echo "I am the original function A::example().<br>\n"; }}class B extends A{ function example() { echo "I am the redefined function B::example().<br>\n" 阅读全文
posted @ 2011-10-25 14:50
南山砍柴的
阅读(2062)
评论(0)
推荐(0)
摘要:
注意 PHP 3 和 PHP4 的构造函数有所不同。PHP 4 的语义更可取。 构造函数是类中的一个特殊函数,当使用 new 操作符创建一个类的实例时,构造函数将会自动调用。PHP 3 中,当函数与类同名时,这个函数将成为构造函数。PHP 4 中,在类里定义的函数与类同名时,这个函数将成为一个构造函数 - 区别很微妙,但非常关键(见下文)。<?php// PHP 3 和 PHP 4 中都能用class Auto_Cart extends Cart{ function Auto_Cart() { $this->add_item ("10", 1); }}?> 阅读全文
posted @ 2011-10-25 14:49
南山砍柴的
阅读(175)
评论(0)
推荐(0)
摘要:
继承通常你需要这样一些类,这些类与其它现有的类拥有相同变量和函数。实际上,定义一个通用类,用于你所有的项目,并且不断丰富这个类以适应你的每个具体项目,将是一个不错的练习。为了使这一点变得更加容易,类可以从其它的类中扩展出来。扩展或派生出来的类拥有其基类(这称为“继承”,只不过没人死)的所有变量和函数,并包含所有你在派生类中定义的部分。类中的元素不可能减少,就是说,不可以注销任何存在的函数或者变量。一个扩充类总是依赖一个单独的基类,也就是说,多继承是不支持的。使用关键字“extends”来扩展一个类。<?phpclass Named_Cart extends Cart{ var $owne 阅读全文
posted @ 2011-10-25 14:48
南山砍柴的
阅读(148)
评论(0)
推荐(0)
摘要:
类类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:<?phpclass Cart{ var $items; // 购物车中的项目 // 把 $num 个 $artnr 放入车中 function add_item ($artnr, $num) { $this->items[$artnr] += $num; } // 把 $num 个 $artnr 从车中取出 function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= 阅读全文
posted @ 2011-10-25 14:47
南山砍柴的
阅读(129)
评论(0)
推荐(0)
摘要:
PHP 有很多标准的函数和结构。还有一些函数需要和特定地 PHP 扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如,要使用诸如 imagecreatetruecolor() 的“图像函数”,您需要在编译 PHP 的时候加上 GD 的支持。或者,要使用 mysql_connect() 函数,您就需要在编译 PHP 的时候加上 MySQL 支持。另外还有一些核心函数,例如“字符串函数”和“变量函数”,它们存在于每一个版本的 PHP 中。调用 phpinfo() 或者 get_loaded_extensions() 可以得知 PHP 加载了那些扩展库。同时还应该注意, 阅读全文
posted @ 2011-10-25 14:45
南山砍柴的
阅读(120)
评论(0)
推荐(0)
摘要:
PHP 支持变量函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找 与变量的值相同的函数,并且将尝试执行它。除了别的事情以外,这个可以被 用于实现回调函数,函数表等等。变量函数不能用于语言结构,例如 echo()、print()、unset()、isset()、empty()、include()、require() 以及类似的语句。您需要使用您自己的外壳函数来将这些结构用作变量函数。例子 12-12. 变量函数示例<?phpfunction foo(){ echo "In foo()<br>\n";}function bar($arg = 阅读全文
posted @ 2011-10-25 14:42
南山砍柴的
阅读(188)
评论(0)
推荐(0)
摘要:
值通过使用可选的返回语句返回。任何类型都可以返回,其中包括列表和对象。 这导致函数立即结束它的运行,并且将控制权传递回它被调用的行。更多信息 请参照 return()。例子 12-9. return() 函数的用法<?phpfunction square ($num){ return $num * $num;}echo square (4); // outputs '16'.?> 函数不能返回多个值,但为了获得简单的结果,可以返回一个列表。例子 12-10. 返回一个数组以得到多个返回值<?phpfunction small_numbers(){ return 阅读全文
posted @ 2011-10-25 14:38
南山砍柴的
阅读(139)
评论(0)
推荐(0)
摘要:
通过参数列表可以传递信息到函数,该列表是以逗号作为分隔符的变量和常量列表。PHP 支持按值传递参数(默认), 通过引用传递, 和 默认参数值. 可变长度参数列表仅在 PHP 4 和后续版本中支持;更多信息请参照 可变长度参数列表 和涉及到的相关函数 func_num_args(), func_get_arg(), 和 func_get_args()。 PHP 3 中通过传递一个数组参数可以达到类似的效果:例子 12-4. 向函数传递数组<?phpfunction takes_array($input){ echo "$input[0] + $input[1] = ", 阅读全文
posted @ 2011-10-25 14:33
南山砍柴的
阅读(196)
评论(0)
推荐(0)
摘要:
用户自定义函数一个函数可由以下的语法来定义:例子 12-1. 展示函数用途的伪码<?phpfunction foo ($arg_1, $arg_2, ..., $arg_n){ echo "Example function.\n"; return $retval;}?> 任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它函数和 类 定义。在 PHP 3 中,函数必须在被调用之前定义。而 PHP 4 则不再有这样的 条件。除非函数如以下两个范例中有条件的定义。如果一个函数以以下两个范例的方式有条件的定义,其定义必须在调用之前完成。例子 12-2. 有条件 阅读全文
posted @ 2011-10-25 14:27
南山砍柴的
阅读(127)
评论(0)
推荐(0)
浙公网安备 33010602011771号