PHP基本语法大全.doc_第1页
PHP基本语法大全.doc_第2页
PHP基本语法大全.doc_第3页
PHP基本语法大全.doc_第4页
PHP基本语法大全.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PHP基本语法详解您无法在浏览器中通过查看源文档的方式来查看 PHP 的源代码 - 您只能看到 PHP 文件的输出,即纯粹的 HTML。这是因为在结果返回浏览器之前,脚本就已经在服务器执行了。PHP标记 在之前的的例子中的PHP代码是以“”为结束,这类似于所有的HTML标记,因为它们都是以小于号为开始,以大于号为结束的。这些符号就叫做PHP标记。PHP标记中有4中不同的风格供我们使用 *XML风格这是我们以后将使用的标记风格。他是PHP推荐使用的标记风格,服务器管理员不能禁用这种风格的标记,因此可以保证正在所有的服务器上使用这种风格的标记,特别是编写用于不同服务器环境的应用程序时,这种标记风格尤为重要。这种风格的标记可以在XML(可扩展置标语言)文档中使用,如果打算在站点中使用XML,就必须使用这种风格的标记。*简短风格这种标记风格是最简单的,但要使用这种标记字符,必须在配置文件中启用short_open_tag选项,或者启用短标记选项编译PHP.我们不推荐使用这种标记,因为虽然该标记风格是当前默认启用的,但是系统管理员偶尔会禁用它,它会干扰XML文档的声明。*SCRIPT风格这种标记风格是最长的,使用过javascript或vbscript的人就会熟悉这种风格 echo (“这是类似JavaScript及VBScript语法 的PHP语言嵌入范例,指定脚本语言的方式”); *ASP风格这种标记风格和ASP或ASP.NET的标记风格相同。如果在配置文件中启用了asp_tags选项就可以使用它PHP输出语句有两种通过 PHP 来输出文本的基础指令:echo 和 print。在上面的例子中,我们使用了 echo 语句来输出文本 Hello World。PHP注释对于阅读代码的人来说,注释其实就相当于代码的解释和说明。注释可以用来解释脚本的用途,脚本编写人,为什么要按如此的方法编写代码,上一次的修改时间等等,PHP支持C,C+和SHELL脚本风格的注释。单行注释 # 或 /多行注释 /* */注意 : 单行注释可以嵌套在多行注释里使用的 但是多行注释是无法在嵌套的C 风格的注释在碰到第一个 */ 时结束。小心不要嵌套 C 风格的注释,当注释大量代码时,可能犯该错误。PHP数据类型数据类型四种标量类型: boolean(布尔型):表达了真值,可以为 TRUE 或 FALSE。要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。 当转换为 boolean 时,以下值被认为是 FALSE: 布尔值 FALSE 整型值 0(零) 浮点型值 0.0(零) 空白字符串和字符串 0 没有成员变量的数组 特殊类型 NULL(包括尚未设定的变量)注意:-1 和其它非零值(不论正负)一样,被认为是 TRUE! integer(整型)integer 为整数型别。在 32 位的操作系统中,它的有效范围是 -2,147,483,648 到 +2,147,483,647 (231+符号位)。要使用 16 进位整数可以在面加 0x。 整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)。 如果用八进制符号,数字前必须加上 0(零),用十六进制符号数字前必须加上 0x。 float(也叫浮点数,双精度数或实数)浮点数为浮点数型别。在 32 位的操作系统中,它的有效范围是 1.7E-308 到 1.7E+308。(自然底数e=2.71828183) string(字符串) 即为字符串变量,无论是单一字符或数千字的字符串都是使用这个变量类型。值得注意的是要指定字符串给字符串变量,要在头尾加上双引号 (例如: 这是字符串)。在要让字符串换行时,可使用溢出字符,也就是反斜线加上指定的符号,若是 x 加上二位数字,如 xFE 即表十六进位字符,详见下表: 符号意义双引号反斜线n换行回车r送出 CRt跳位 (TAB)定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析。这样,你就可以在双引号串中包含任何其他字符,甚至单引号。下面的引号串都是合法的:$s = I m a student; $s = I am a “student” ;当PHP遇到与串的开头相对应的引号时,便认为已经到了字符串尾部,于是: Why doesnt this work? 实际上被PHP语法分析器分成三个部分: Why doesnt 包含一个单引号的双引号串 this多余的字符,分析器无法处理 work? 普通字符串 上面的这个例子企图在双引号串中包含双引号,而分析器在遇到第二个双引号时便认为字符串结束了。要达到包含引号的目的, 必须分析器在遇到串内普通引号的时候忽略它的原意,我们在引号的 前面加上一个反斜杠来告诉PHP:这个引号是字符串的一部分,正确的表示方法是这样: Why doesnt that work?字串可以使用字串连接符(.)来连接,如: $first_name = A; $last_name = B; $full_name = $first_name . . $last_name;注意:? $aa=5;echo $aa. test;echo $aa test;/在双引号中,变量名称被变量值替代echo $aa test;;?/在单引号中,变量名称或其他的文本都会不经修改而发送给浏览器复合类型:array object array(数组) array 为数组变量,可以是二维、三维或者多维数组,其中的元素也很自由,可以是 string、integer 或者 double,甚至是 array。可以用 array() 语言结构来新建一个 array。它接受一定数量用逗号分隔的 key = value 参数对。key 只能是整数和字符串 $a=array(1=one,2=two,3=three);$a=array(one, two,three);默认下标是从0开始$MyArray1=array(a,b,c,d);/一维数组$MyArray2=array(地支=array(子,丑,寅,卯),生肖=array(鼠,牛,虎,兔),数字=array(1,2,3,4); /二维数组true,foo=bar, false);echo$arrfoo;/barecho$arr12;/1?结果:bar1结果:b(索引值从0开始)数据类型强制转换: 允许的强制转换有: (int),(integer) - 转换成整型 (bool),(boolean) - 转换成布尔型 (float),(double),(real) - 转换成浮点型 (string) - 转换成字符串 (array) - 转换成数组 (object) - 转换成对象强制类型强制转换 (参考:PHP手册)PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。 允许的强制转换有: (int),(integer) - 转换成整型 (bool),(boolean) - 转换成布尔型 (float),(double),(real) - 转换成浮点型 (string) - 转换成字符串 (array) - 转换成数组 (object) - 转换成对象注意在括号内允许有空格和制表符还可以用settype ( mixed var, string type )进行强制转换. 1.强制转换为布尔值 (bool)|(boolean)要明示地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制需要一个 boolean 参数时,该值会被自动转换。 当转换为 boolean 时,以下值被认为是 FALSE: 布尔值 FALSE整型值 0(零)浮点型值 0.0(零)空白字符串和字符串 0 没有成员变量的数组没有单元的对象(仅适用于 PHP 4)特殊类型 NULL(包括尚未设定的变量)所有其它值都被认为是 TRUE(包括任何资源)。 ?phpvar_dump(bool) ); / bool(false)var_dump(bool) 1); / bool(true)var_dump(bool) -2); / bool(true)var_dump(bool) foo); / bool(true)var_dump(bool) 2.3e5); / bool(true)var_dump(bool) array(12); / bool(true)var_dump(bool) array(); / bool(false)var_dump(bool) false); / bool(true)? 2.强制转换为整形(int)|(integer)要明示地将一个值转换为 integer,用 (int) 或 (integer) 强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。还可以通过函数 intval() 来将一个值转换成整型。 a.从bool转换b.从浮点数转换 取整,超出范围,结果不定c.从字符串转换 参看字符串转换为数值d.从其它类型转换 先换成 bool值,再转换决不要将未知的分数强制转换为 integer,这样有时会导致意外的结果。$str = 123.456abc7; / (int)123echo (int)$str;$str = abc123.456; / (int)0$str = true; / (int)1$str = false; / (int)0 3.强制转换为浮点型 (int)|(double)|(real)|doubleval()|floatval()|intval() 精度: 0.12345678901234 / double,real都一样数据的丢失参 字符串转换为数值 4.强制换为字符串 (string) |strval()可以用 (string) 标记或者 strval() 函数将一个值转换为字符串。当某表达式需要字符串时,字符串的转换会在表达式范围内自动完成。例如当使用 echo() 或者 print() 函数时,或者将一个变量值与一个字符串进行比较的时候。 布尔值 TRUE 将被转换为字符串 1,而值 FALSE 将被表示为 (即空字符串)。这样就可以随意地在布尔值和字符串之间进行比较。 整数或浮点数数值在转换成字符串时,字符串由表示这些数值的数字字符组成(浮点数还包含有指数部分)。 数组将被转换成字符串 Array,因此无法通过 echo() 或者 print() 函数来输出数组的内容。请参考下文以获取更多提示。 对象将被转换成字符串 Object。如果因为调试需要,需要将对象的成员变量打印出来,请阅读下文。如果希望得到该对象所依附的类的名称,请使用函数 get_class()。自 PHP 5 起,如果合适可以用 _toString() 方法。 资源类型总是以 Resource id #1 的格式被转换成字符串,其中 1 是 PHP 在运行时给资源指定的唯一标识。如果希望获取资源的类型,请使用函数 get_resource_type()。 NULL 将被转换成空字符串。正如以上所示,将数组、对象或者资源打印出来,并不能提供任何关于这些值本身的有用的信息。请参阅函数 print_r() 和 var_dump(),对于调试来说,这些是更好的打印值的方法。 可以将 PHP 的值转换为字符串以永久地储存它们。这种方法被称为序列化,可以用函数 serialize() 来完成该操作。如果在安装 PHP 时建立了 WDDX 支持,还可以将 PHP 的值序列化为 XML 结构。 4. 强制转换为数组 (array) 对于任何的类型:整型、浮点、字符串、布尔和资源,如果将一个值转换为数组,将得到一个仅有一个元素的数组(其下标为 0),该元素即为此标量的值。 如果将一个对象转换成一个数组,所得到的数组的元素为该对象的属性(成员变量),其键名为成员变量名。 如果将一个 NULL 值转换成数组,将得到一个空数组。 5. 转换为对象 (object)如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变量将包含该值 6. 转换为资源 (无法转换)由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。PHP 类型比较表(看手册附录P)以下的表格显示了 PHP 类型和比较运算符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。 注意 HTML 表单并不传递整数、浮点数或者布尔值,它们只传递字符串。要想检测一个字符串是不是数字,可以使用 is_numeric() 函数。 在没有定义变量 $x 的时候,诸如 if ($x) 的用法会导致一个 E_NOTICE 级别的错误。所以,可以考虑用 empty() 或者 isset() 函数来初始化变量。PHP常量常量:合法的常量名以字母(由大写字母组成和C语言一样)或下划线开始,后面跟着任何字母,数字或下划线。常量和变量不同: 常量前面没有美元符号($); 常量只能用 define() 函数定义,而不能通过赋值语句; 常量可以不用理会变量范围的规则而在任何地方定义和访问; 常量一旦定义就不能被重新定义或者取消定义; 常量只能包含标量数据(boolean,integer,float 和 string)。 常量的范围是全局的。不用管作用域就可以在脚本的任何地方访问常量define() 的功能可以让我们自行定义所需要的常量。见下例 PHP变量变量:变量用一个美元符号($)后面跟变量名来表示。变量名是区分大小写的。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字或下划线。PHP 是一门松散类型的语言(Loosely Typed Language)在 PHP 中,不需要在设置变量之前声明该变量。 在上面的例子中,您看到了,不必向 PHP 声明该变量的数据类型。 根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型。 在强类型的编程语言中,您必须在使用前声明变量的类型和名称。 在 PHP 中,变量会在使用时被自动声明。可变变量(variable variable):这个代码等价于:$name = 张三;变量范围(作用域):作用域是指在一个脚本中某个变量在哪些地方可以使用或可见。全局变量(global variable): 输出是3局部变量(local variable):任何用于函数内部的变量将被限制在局部函数范围内。 什么也不输出静态变量(static variable):在函数退出时, 这个变量始终存在,不被销毁, 但不能被其它函数使用, 当再次进入该函数时, 将保存上次的结果。?php/静态变量的例子functionmyfunc()static$mystr;$mystr.=哈;echo$mystr.n;myfunc();/哈myfunc();/哈哈myfunc();/哈哈哈?PHP运算符使用操作符:操作符是用来对数值和变量进行某种操作运算的符号。学过的两个操作符:赋值操作符(=)和字符串连接操作符(.)。算数操作符:例子名称结果-$a取反$a 的负值。$a + $b加法$a 和 $b 的和。$a - $b减法$a 和 $b 的差。$a * $b乘法$a 和 $b 的积。$a / $b除法$a 除以 $b 的商。$a % $b取余数 $a 除以 $b 的余数。(“/”)总是返回浮点数,即使两个运算数是整数(或由字符串转换成的整数)也是这样。 注: 取模 $a % $b 在 $a 为负值时的结果也是负值。 ?php$a=8;$b=2;$c=3;echo$a+$b.n;echo$a-$b.n;echo$a*$b.n;echo$a/$b.n;echo$a%$c.n;?注意:(*)作为乘法操作符,而不是常规的乘法符号。除法操作符同理。字符串运算符:有两个字符串运算符。第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数后。 赋值运算符:基本的赋值运算符是“=”。一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数。 赋值运算表达式的值也就是所赋的值。也就是说,“$a = 3”的值是 3。 括号提高子表达式的优先级复合赋值操作符:增加程序的执行效率。 符号使用方法等价于意义=$a=$b$a=$b将右边的值连到左边+=$a+=$b$a=$a+$b将右边的值加到左边-=$a-=$b$a=$a-$b将右边的值减到左边*=$a*=$b$a=$a*$b将左边的值乘以右边/=$a/=$b$a=$a/$b将左边的值除以右边%=$a%=$b$a=$a%$b将左边的值对右边取余数.=$a.=$b$a=$a.$b将右边的字符串加到左边?php$a=5;$a+=2;/即$a=$a+2;echo$a.n;$b=哇;$b.=哈;/$b=哇哈;$b.=哈;/$b=哇哈哈;echo$bn;?递增递减运算符:注: 递增递减运算符不影响布尔值。递减 NULL 值也没有效果,但是递增 NULL 的结果是 1。注意字符变量只能递增,不能递减。例子名称效果+$a前加$a 的值加一,然后返回 $a。$a+后加返回 $a,然后将 $a 的值加一。-$a前减$a 的值减一, 然后返回 $a。$a-后减返回 $a,然后将 $a 的值减一。?phpecho*;$a=5;echoa+.$a+.n;echoa.$a.n;echo*;$a=5;echo+a.+$a.n;echoa.$a.n;echo*;$a=5;echoa-.$a-.n;echoa.$a.n;echo*;$a=5;echo-a.-$a.n;echoa.$a.n;?比较运算符: 比较两个值。根据比较结果返回:true或false。例子名称结果$a = $b等于TRUE,如果 $a 等于 $b。$a != $b不等TRUE,如果 $a 不等于 $b。$a $b不等TRUE,如果 $a 不等于 $b。$a $b大于TRUE,如果 $a 严格 $b。$a = $b大于等于TRUE,如果 $a 大于或者等于 $b。逻辑运算符:例子名称结果$a and $bAnd(逻辑与)TRUE,如果 $a 与 $b 都为 TRUE。$a or $bOr(逻辑或)TRUE,如果 $a 或 $b 任一为 TRUE。$a xor $bXor(逻辑异或)TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。! $aNot(逻辑非)TRUE,如果 $a 不为 TRUE。$a & $bAnd(逻辑与)TRUE,如果 $a 与 $b 都为 TRUE。$a | $bOr(逻辑或)TRUE,如果 $a 或 $b 任一为 TRUE。“与”和“或”有两种不同形式运算符的原因是它们运算的优先级不同PHP语句条件判断语句:第一种是只有用到 if 条件,当作单纯的判断。解释成 若发生了某事则怎样处理。if (expr) statement其中的 expr 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 。 范例:本例省略大括号。 范例:本例的执行部分有三行,不可省略大括号。 第两种是除了 if 之外,加上了 else 的条件,可解释成 若发生了某事则怎样处理,否则该如何解决。范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 如果当前日期是周五,下面的代码将输出 周末愉快!,否则会输出 美好的一天!:如果需要在条件成立或不成立时执行多行代码,应该把这些代码行包括在花括号中:?php$d=date(D);if ($d=Fri) echo Hello!; echo 周末愉快!; echo 星期一见!; ?第三种就是递归的 if.else 循环,通常用在多种决策判断时。它将数个 if.else 拿来合并运用处理。 直接看下面的例子 $b)echoa比b大;elseif($a=$b)echoa等于b;elseechoa比b小;? 上例只用二层的 if.else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if.else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。如果当前日期是周五,下面的例子会输出 周末愉快!,如果是周日,则输出 星期天愉快!,否则输出 美好的一天!: do.while 是重复叙述的循环,可以分成两种模式。 最单纯的就是只有 while 的循环。用来在指定的条件内,不断地重覆指定的步骤。语法如下 while (expr) statement其中的 expr 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 。 下例很有趣,要电脑的浏览器出现十次 以后不敢了 的字符串,前面并加上数字,表示说了第几次不敢了。(感觉好像是 Web Server 做错事被处罚) ?php$i=1;while($i=10)print$i+;echo.以后不敢了n;?while 可以不用大括号来包住执行部分,而使用冒号加上 endwhi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论