-1-PHP基本语法详解您无法在浏览器中通过查看源文档的方式来查看PHP的源代码-您只能看到PHP文件的输出,即纯粹的HTML。这是因为在结果返回浏览器之前,脚本就已经在服务器执行了。PHP标记在之前的的例子中的PHP代码是以“?php”为开始,“?”为结束,这类似于所有的HTML标记,因为它们都是以小于号为开始,以大于号为结束的。这些符号就叫做PHP标记。PHP标记中有4中不同的风格供我们使用*XML风格?php?这是我们以后将使用的标记风格。他是PHP推荐使用的标记风格,服务器管理员不能禁用这种风格的标记,因此可以保证正在所有的服务器上使用这种风格的标记,特别是编写用于不同服务器环境的应用程序时,这种标记风格尤为重要。这种风格的标记可以在XML(可扩展置标语言)文档中使用,如果打算在站点中使用XML,就必须使用这种风格的标记。*简短风格??这种标记风格是最简单的,但要使用这种标记字符,必须在配置文件中启用short_open_tag选项,或者启用短标记选项编译PHP.我们不推荐使用这种标记,因为虽然该标记风格是当前默认启用的,但是系统管理员偶尔会禁用它,它会干扰XML文档的声明。*SCRIPT风格这种标记风格是最长的,使用过javascript或vbscript的人就会熟悉这种风格scriptlanguage=“php”echo(“这是类似JavaScript及VBScript语法的PHP语言嵌入范例,指定脚本语言的方式”);/script*ASP风格这种标记风格和ASP或ASP.NET的标记风格相同。如果在配置文件中启用了asp_tags选项就可以使用它%echo(“ASP的风格的标记”);%-2-PHP输出语句有两种通过PHP来输出文本的基础指令:echo和print。在上面的例子中,我们使用了echo语句来输出文本HelloWorld。PHP注释对于阅读代码的人来说,注释其实就相当于代码的解释和说明。注释可以用来解释脚本的用途,脚本编写人,为什么要按如此的方法编写代码,上一次的修改时间等等,PHP支持C,C++和SHELL脚本风格的注释。单行注释#或//多行注释/**/注意:单行注释可以嵌套在多行注释里使用的但是多行注释是无法在嵌套的?phpecho这是第一种例子。\n;//本例是C++语法的注释/*本例采用多行的注释方式*/echo这是第两种例子。\n;echo这是第三种例子。\n;#本例使用UNIXShell语法注释?C风格的注释在碰到第一个*/时结束。小心不要嵌套C风格的注释,当注释大量代码时,可能犯该错误。?php/*echoThisisatest;/*Thiscommentwillcauseaproblem*/*/?PHP数据类型数据类型四种标量类型:-3-boolean(布尔型):表达了真值,可以为TRUE或FALSE。要指定一个布尔值,使用关键字TRUE或FALSE。两个都不区分大小写。?php$foo=True;//assignthevalueTRUEto$foo?当转换为boolean时,以下值被认为是FALSE:布尔值FALSE整型值0(零)浮点型值0.0(零)空白字符串和字符串0没有成员变量的数组特殊类型NULL(包括尚未设定的变量)注意:-1和其它非零值(不论正负)一样,被认为是TRUE!integer(整型)integer为整数型别。在32位的操作系统中,它的有效范围是-2,147,483,648到+2,147,483,647(2^31+符号位)。要使用16进位整数可以在面加0x。整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(-或者+)。如果用八进制符号,数字前必须加上0(零),用十六进制符号数字前必须加上0x。?php$a=1234;//十进制数$a=-123;//一个负数$a=0123;//八进制数(等于十进制的83)$a=0x1A;//十六进制数(等于十进制的26)?float(也叫浮点数,双精度数或实数)浮点数为浮点数型别。在32位的操作系统中,它的有效范围是1.7E-308到1.7E+308。(自然底数e=2.71828183)-4-?php$a=1.234;$a=1.2e3;$a=7E-10;?string(字符串)即为字符串变量,无论是单一字符或数千字的字符串都是使用这个变量类型。值得注意的是要指定字符串给字符串变量,要在头尾加上双引号(例如:这是字符串)。在要让字符串换行时,可使用溢出字符,也就是反斜线加上指定的符号,若是\x加上二位数字,如\xFE即表十六进位字符,详见下表:符号意义\双引号\\反斜线\n换行回车\r送出CR\t跳位(TAB)定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析。这样,你就可以在双引号串中包含任何其他字符,甚至单引号。下面的引号串都是合法的:$s=I'mastudent;$s='Iama“student”';当PHP遇到与串的开头相对应的引号时,便认为已经到了字符串尾部,于是:Whydoesn'tthiswork?实际上被PHP语法分析器分成三个部分:Whydoesn't——包含一个单引号的双引号串this——多余的字符,分析器无法处理work?——普通字符串-5-上面的这个例子企图在双引号串中包含双引号,而分析器在遇到第二个双引号时便认为字符串结束了。要达到包含引号的目的,必须分析器在遇到串内普通引号的时候忽略它的原意,我们在引号的前面加上一个反斜杠来告诉PHP:这个引号是字符串的一部分,正确的表示方法是这样:Whydoesn't\that\work?字串可以使用字串连接符(.)来连接,如:$first_name='A';$last_name='B';$full_name=$first_name.''.$last_name;注意:?$aa=5;echo$aa.‘testbr/’;echo$aatestbr/;//在双引号中,变量名称被变量值替代echo’$aatestbr/’;;?//在单引号中,变量名称或其他的文本都会不经修改而发送给浏览器复合类型:arrayobjectarray(数组)array为数组变量,可以是二维、三维或者多维数组,其中的元素也很自由,可以是string、integer或者double,甚至是array。-6-可以用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));//二维数组?php$arr=array(12=true,foo=bar,false);echo$arr[foo];//barecho$arr[12];//1?结果:bar1?php$MyArray1=array(a,b,c,d);echo$MyArray1[1];print_r($MyArray1);?结果:b(索引值从0开始)数据类型强制转换:-7-?php$foo=10;//$fooisaninteger$bar=(bool)$foo;//$barisaboolean?允许的强制转换有:(int),(integer)-转换成整型(bool),(boolean)-转换成布尔型(float),(double),(real)-转换成浮点型(string)-转换成字符串(array)-转换成数组(object)-转换成对象强制类型强制转换(参考:PHP手册)PHP中的类型强制转换和C中的非常像:在要转换的变量之前加上用括号括起来的目标类型。允许的强制转换有:(int),(integer)-转换成整型(bool),(boolean)-转换成布尔型(float),(double),(real)-转换成浮点型(string)-转换成字符串(array)-转换成数组(object)-转换成对象注意在括号内允许有空格和制表符还可以用settype(mixedvar,stringtype)进行强制转换.1.强制转换为布尔值(bool)|(boolean)要明示地将一个值转换成boolean,用(bool)或者(boolean)来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制需要一个boolean参数时,该值会被自动转换。当转换为boolean时,以下值被认为是FALSE:布尔值FALSE整型值0(零)浮点型值0.0(零)空白字符串和字符串0没有成员变量的数组没有单元的对象(仅适用于PHP4)-8-特殊类型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,这样有时会导致意外的结果。?phpecho(int)((0.1+0.7)*10);//显示7?$str=123.456abc7;//(int)123echo(int)$str;$str=abc123.456;//(int)0$str=true;//(int)1$str=false;//(int)03.强制转换为浮点型(int)|(double)|(real)|doubleval()|floatval()|intval()精度:0.12345678901234//double,real都一样数据的丢失参字符串转换为数值-9-4.强制换为字符串(string)|strval()可以用(string)标记或者strval()函数将一个值转换为字符串。当某表达式需要字符串时,字符串的转换会在表达式范围内自动完成。例如当使用echo()或者print()函数时,或者将一个变量值与一个字符串进行比较的时候。布尔值TRUE将被转换为字符串1,而值FALSE将被表示为(即空字符串)。这样就可以随意地在布尔值和字符串之间进行比较。整数或浮点数数值在转换成字符串时,字符串由表示这些数值的数字字符组成(浮点数还包含有指数部分)。数组将被转换成字符串Array,因此无法通过echo()或者print()函数来输出数组的内容。请参考下文以获取更多提示。对象将被转换成字符串Object。如果因为调试需要,需要将对象的成员变量打印出来,请阅读下文。如果希望得到该对象所依附的类的名称,请使用函数get_class()。自PHP5起,如果合适可