【PHP入门到精通】:Ch03:PHP语言基础

1, PHP风格

这里为了显示代码把"<"和">"和key值以空格分开了,实际书写时切记不要将其分开:

(1) < ?php ? >: 这是XML风格的标记, 这里我们推荐使用此风格!

(2) < script language="php" < /script>: 这是脚本风格的标记

(3) < ? ?>: 这是简短风格的标记

(4) < % %>: 这是ASP风格的标记

提示:简短风格 和 ASP风格的标记,需要配置php.ini文件,分别将short_open_tag和asp_tags的开关打开

2, 注释

支持3种 = C注释格式*2 + SHELL注释格式*1:

单行注释(//),多行注释(/* */), SHELL单行注释(#)。

注意:单行注释不能出现"?>",多行注释不能嵌套操作。

 

3, 数据类型

支持8种原始类型=标量类型*4 + 复合类型*2 + 特殊类型*2

boolean, integer, float/double, string; array, object; source, null

这些变量类型通常不由programmer设定, 是PHP根据变量使用上下文在运行时决定的。

变量标识符要以"$"开头,声明和调用时都要带上"$"符。

(3.1) boolean

不是只有false值才为假的,在一些特殊情况下,boolean值也会被认为是false。像:

0, 0.0, "0", 空白字符串(""), 只声明没有赋值的数组等

(3.2)string

定义方式有3种=单引号(') + 双引号(") + 界定符(<<<)

界定符<=>双引号,而单引号与双引号是有区别的:

(3.2.1)双引号所包含的变量会自动被替换成实际数值,而单引号中包含的变量则按普通字符串输出。

(3.2.2)单引号只要对内部的单引号进行转义即可;而双引号则需要对更多的特殊字符进行转义才能正确显示,有

: \r, \n, \t, \\, \$, \', ", \[0-7]{1,3}, \[0-9A-Fa-f]{1,2}

(3.2.3)定义简单的字串时,使用单引号比较合适,如果使用双引号,PHP将花一些时间来处理字串的转义和变量的解析。 因此没有特别的要求,应该尽量使用单引号。

$fir_str="first_string"

echo "$fir_str" = first_string; echo '$fir_str' = $fir_str

(3.3)integer

定义:只能包含整数

表示范围:32位机中,[-2147483648-2147473647]

表示方式:十进制表示法,八进制表示法(0开头),十六进制(0x开头)

注意:遇到非法数字时,非法数字后面的数字会被忽略

赋值的数值溢出或者运算结果溢出时,溢出值会被当做float型处理, Dec(1234567890)=1234567890

hex(1234567890)=78187493520

Oct(1234567890)=342391

Oct(1234567)=342391

(3.4)float

定义:用来存储数字,也可以存储小数

范围:存储精度远大于整数,32位机下有效范围[1.7E-308, 1.7E+308]

表示格式:标准格式,科学记数法格式

注意:浮点型数值只表示了一种近似值,所以尽量避免浮点型数值之间进行等值比较,因为最后的结果往往是不准确的

函数格式:pi()=3.1415926535898

标准格式:3.14159265359=3.14159265359

科学记数法格式:314159265359E-11=3.14159265359

(3.5)array

定义:一组数据的集合,集合中的每个数据称为一个元素,元素包括索引(键名)和值两部分。

索引可以是数字,也可以是字串;

值可以是多种数据类型。

表示格式:$array=('value1', 'value2',......)

$array[key] = 'value'

$array = array(key1=>value1, key2=>value2,......)

注意:声明数组后,它的元素个数可以自由更改,只要给数组赋值,数组就会自动增加长度。 示例:

$arr1 = array('This', 'is', 'a', 'example');

$arr2 = array(0=>'php', 1=>'is', 'the'=>'the', 'str'=>'best');

$arr3[0] = 'tmp_name'

(3.6)object

有两种方法:面对过程和面对对象

(3.7)resource

resource(资源)是一种特殊变量,又叫做句柄,保存到外部资源的一个引用。资源是通过专门的函数来建立和使用的。

在使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗殆尽。因此资源很少需要手工释放。

(3.8) null

null(空值),特殊的值,顾名思义,表示没有为该变量设置任何值,唯一的值就是null。

null不区分大小写,null=NULL。其产生有3种情况:没有赋任何值,被赋值null,被unset()函数处理过的变量。

$str1= null; => str1 is null

$str2='str'; unset($str2); => str2 将不可用,或者即便使用它,也将为NULL值,且PHP会报NOTICE警告

(3.9), 类型转换

转换成boolean时,null, 0 和未赋值的变量或数组会被转换为false,其它的为真

转换成integer时,false转换为0,true转换为1,浮点型的小数部分会被舍去,字符型将截取到非数字位

,若不以数字开头将输出0

表示方式:1, (type)var

2,bool settype(mixed var, string type)

注意:两者区别是:使用类型操作符直接输出转换后的结果,原变量不会发生变化; 而使用settype()函数后,原变量会被修改

。 示例:

integer(314159265359E-11)=3

num=3.1415926r*r

(integer)num=3,now num=3.1415926r*r

settype($num, 'integer'): ohoh, $num is changed, but now num=3

 

4, 常量

获取方法:直接使用常量名;使用constant()函数;判断变量是否定义使用defined()函数,

使用方法:使用常量时,常量前面不带"$"符号,且不能放在""内,而使用defined判断常量是否存在时,需要加上""号

注意:

(1)常量VS变量区别

1.1),常量只能用define()函数定义,而不能通过赋值语句;建议不要以__开头,以便与预定义常量冲突引发结果异常。

1.2),常量可以定义大小写敏感还是不敏感,而变量永远是大小写敏感;

1.3),常量一旦定义就不能被重新定义或者取消定义,且常量的值只能是标量类型;变量不受此类限制;

1.4), 使用常量时,常量前面不带"$"符号,还有很多注意点,总之使用不方便,还容易混淆,效率也低

因为PHP处理常量的时候要进行多次查找;而使用变量时是要带"$"符号的;

1.4),常量可以不用理会变量的作用域,可以在任何地方定义和访问。

(2)常量有自身的特点,能少用就少用

2.1) PHP处理常量的方法过于宽松,所以会产生常量使用上的混淆,如果能够严格一些的话,是会避免很多问题的。 实际过程中,能使用变量就不要用常量。

2.2) 常量 (3)重赋值问题

虽然说不能重新定义,但再次赋值PHP也只会产生NOTICE错误,如果你定义之前,其它人也定义了同名常量,这将会产生无法预知的结果。

补救方法:使用常量之前要使用defined()来确认一下常量是否已经定义过。

示例:

define("MESG", "This is a msg");

MESG = This is a msg(OK).

$MESG = (NG).

defined("MESG") => 1(OK).

defined('MESG') => 1(OK).

defined($MESG) => (NG).

defined(MESG) => (NG).

isset(MESG) =>(NG).

当前文件名=D:\PHP\www\myTest\ch03.php,当前行数=150,PHP版本信息=5.4.22,当前操作系统=WINNT

 

6, 变量

定义:PHP4之前需要在使用前声明变量,PHP4之后只要在需要为变量赋值即可,使用前可以不用声明。

变量名称 = "$" + 标识符;

变量名大小写敏感;标识符以字母,数字,下划线组成;但不能以数字打头。

赋值:3种方式: 以"="号赋值;变量间赋值;引用赋值;

变量间赋值:赋值后两个变量使用各自的内存,互不干扰。

引用赋值:赋值后,两个变量名访问同一个变量内容,当改变其中一个变量的值时,另一个也跟着发生变化。用&符号来表示引用。

注意:PHP不需要声明变量,但使用时要给初始化值,否则会出现程序逻辑错误。变量声明和变量初始化是两码事。 6.1) 变量作用域

有3种情况:局部变量;全局变量;静态变量。

局部变量:在函数内部定义,作用域是所在函数;

全局变量:在函数外部定义,作用域是整个PHP文件,但在函数内部不可用,除非使用global关键字声明。

静态变量:使用static定义,能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。

提示:在函数变量,其作用域为所在函数;如果在函数外赋值,将被认为是完全不同的另一个变量。

6.2) 可变变量

定义:用一个变量的值作为另一个变量的名称。

$var1="var2",

$$var1="var3";

echo $var1. $var2;

第1个语句声明了变量var1,其内容为var2.

第2个语句声明了可变变量var2,其内容为var3. 这里$$var1可以理解成$($var1); 因此第3个语句就可以直接把var1的内容var2当成变量来使用了。

6.3)预定义变量(略)

PHP提供了很多非常实用的预定义变量,通过这些预定义变量可以获取到用户会话、用户操作系统的环境和本地操作系统的环境等信息,具体预定义变量可参照相关文档。

 

7,运算符

算法运算符:+ - * / % ++ -- ;

字串运算符:.(英文的句号);

赋值运算符:= += -= *= /= .= %= ;

位运算符: &(位与) |(位或) ~(位非) ^(位异或) <<(左移) >>(右移) ;

逻辑运算符:&&[and](逻辑与) ||[or](逻辑或) !(逻辑非) xor(逻辑异或) ;

比较运算符:>(大于) <(小于) ==(等于) !=(不等于) <=(大于等于) >=(小于等于) ===(恒等) !==(非恒等) ;

错误控制运算符:@ ;

三元运算符:?= ;

注意: 1)字串类:如果字串间使用"+"号,PHP会先把字串转换成数字,然后再做算术运算。

2)逻辑类:&&与and ||与or 有着不同的优先级

3)比较类:===表示不只是数值上相等,而且两者类型也一样。

7.2,运算符优先级和结合规则

不同优先级先高后低,相同优先级从左到右。也可以使用小括号,括号内运算最先进行。

pi = 3.1415926r*r; num = 1;

$pi.$num = 3.1415926r*r1; $pi+$num = 4.1415926

 

8, 函数

注意:

8.1) 参数传递

函数间参数传递有3种:按值传递,按引用传递,和默认参数。

按值传递:

将实参的值复制到形参中,函数内部针对形参进行操作,操作结果不会影响到实参。即函数返回后,实参的值不会改变。

按引用传递:形参前标注"&"表明是按引用传递,

就是将实参的内存地址传递到形参中,函数内部的所有操作都会影响到实参的值。函数返回后,实参的值会发生变化。

默认参数:

可以将某个参数设为可选参数,将可选参数放在参数列表末尾,并且指定默认值为空。

使用默认参数时,默认参数必须放在非默认参数的右侧,否则函数可能出错。从PHP5开始,默认值也可以通过引用传递。

8.2) 变量函数

8.3)对函数的引用

函数参数传递中有按引用传递的方式,可以修改实参的内容。引用可用于普通变量,函数参数,也可用于函数本身。对函数的引用,就是对函数返回结果的引用。

和参数传递不同,这里必须在两个地方使用"&"符号,用来说明返回的是一个引用。

8.4)取消引用

不再需要引用时,可以取消引用。取消引用使用unset()函数,它只是断开了变量名和变量值之间的绑定,而不是销毁变量值。

普通函数测试:

10 * 10 = 100

变量函数测试:

hello, I'm comming.

TOM has gone

I'm back, Lily

对函数的引用测试:

看到了

取消引用测试:

$num = 1234, $ref_num = 1234

unset($ref_num) => $num = 1234, $ref_num is unusable.

(unset)($ref_num) => $num = 1234,$ref_num = 1234

posted @ 2013-12-18 15:38  咚咚锵锵  阅读(288)  评论(0编辑  收藏  举报