学习笔记:第一章 PHP的基本语法
一、基本概念
PHP(hypertext
processor超文本预处理器),是一种广泛应用于服务器端的、嵌入HTML内的脚本语言。
二、PHP插入方法和注释
1、PHP四种插入方法:
(1)<?php ?>
标准风格的标记,属于XML风格。
(2)
(3) ?>
简短风格标记.在php.ini中的指令short_open_tag可以关闭该功能
(4)
在php.ini中的指令asp_tags可以关闭该功能
2、注释
//(单行) (多行)
三、变量
1、变量命名
字母或下划线开头,后跟任意数量的字母、数字或下划线。前头加$符号。
严格区分大小写。但内置结构、关键字和用户自定义的类名、函数名不区分。
2、可变变量
$hi=”hello”;
$$hi=”world”
echo $hi.’ ’.$hello; //输出:hello world
即$hello与$$hi等价。
3、变量的引用
$foo=”Bob”;
$bar=&$foo;
此时,两个变量同步,任意一个改变值,都会影响另一个值。
注意:只有有名字的变量才可以引用赋值。
4、变量类型
四种标量类型:(1)整型 (2)浮点型 (3)字符串 (4)布尔型
两种复合类型:(1)数组 (2)对象
两种特殊类型:(1)NULL (2)资源
(1)整型(integer)
a、32位操作系统中[-2147483648,2147483647],和平台无关。不支持无符号整数。
b、如果超出了integer范围,会被解释为float。
(2)浮点型(float)
a、最大支持到[1.7E-38,1.7E+38],精确到小数点后15位。
b、浮点数只是一种近似的数值。如果用浮点数表示8,结果其实是7.99999….所以永远不要比较两个浮点数是否相等。
(3)字符串(string)
a、三种定义方式:单引号、双引号、定位符(<<
b、※ 单引号:只能转义单引号和转义字符本身;不解析其中的变量。
※ 双引号:转移更多字符;解析其中的变量(如果想明示指定的变量名结束,用花括号)。
※
定位符:$变量名=<<
结束定界符;
注意:结束定界符必须独立一行存在。前后不能有其他字符(包括空白符)。
c、双引号中,“\”后面跟什么,“\”都被认为是转义字符,但在单引号中,只有“\’”、“\\”时,“\”才被认为是转义字符。
(4)布尔型(boolean)
a、以下值被认为是FALSE,其它所有值都认为是TRUE:
※ 整数0为FALSE,-1和其它非零值都是TRUE
※ 浮点型0.0
※ 字符串”0”、空白字符串(中间无空格)
※ 布尔值FALSE
※ 没有成员的数组
※ NULL
(5)数组
a、数组可以存放多个任意类型的数据
b、array([key=>]value[,…]);
(6)对象
(7)NULL
a、下列情况之一被认为是NULL:
※ 赋值NULL
※ 声明的变量尚未被赋值
※ 被unset()函数销毁的变量
(8)资源类型
a、资源是一种特殊类型的变量,保存了到外部资源的一个引用。
四、伪类型
1、mixed:说明一个参数可以接受多种不同的(并不必须是所有的)类型。
2、number:说明一个参数可以是int或float。
3、callback:函数。
五、数据类型之间的转换
1、自动类型转换
a、通常只有四种标量类型和NULL才可以自动转换。
b、没有改变运算数本身
c、
※ 布尔类型:TRUE转化整型1;FALSE转化整型0。
※ NULL类型:转化为整数0。
※
字符串类型:转化为数字。”23abc”->123;”1.23abc”->1.23;”123”->0。
2、强制类型转换
a、在变量名前用括号括起来要转变的类型:
※ (int)
※ (float)
※ (string)
※ (bool)
※ (array)
※ (object)
b、使用函数
※ intval()
※ floatval()
※ strval()
c、改变变量本身
用settype()函数。如:settype($foo,
“integer”);
d、NULL值转化为字符串,为空字符串。
3、变量类型的测试函数
is_int()、is_float()、is_string()、is_bool()、is_array()、is_object()、is_resource()、is_null()
is_scalar():判断是否是变量
is_numeric():判断是否是数字或数字字符串
is_callback():判断是否是有效的函数名
六、常量
1、定义和使用
(1)脚本执行期间一个常量一旦被定义,就不能再改变或者取消定义。
(2)作用域是全局
(3)只能包含标量类型
(4)定义:默认大小写敏感;一般用大写标识
boolean define(string name, mixed value
[,bool case_insensitive]);
(5)defined($name):判断常量是否被定义
2、预定义常量
见书P161页
七、PHP中的运算符
分类:算术运算符、字符串运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、其他运算符
(1) 算数运算符:
a、 对于非数值型的操作数,PHP在算术运算时会自动将其转换成一个数字。
b、 +、-、*、/
c、 %求模运算符:求余,首先将两边操作数转换为整型。例如,需要随机数在10以内,可以让这个随机数和10取余,得到的余数就永运不会超过10。
d、 ++自增、--自减:优先级高于+、-、*、/、%等。如$a=10; $b=$a++ + ++$a;
//22
(2) 字符串运算符:. 如$a..$b
(3) 赋值运算符
a、 左边操作数必须是变量,把右边表达式的值赋给左边的变量。
b、 =、+=、-=、*=、/=、%=、.=
(4) 比较运算符
a、>、=、<=、!=(<>)、==
b、===全等于:值和类型都相同时返回TRUE;否则返回FALSE
c、!==非全等于:当左边操作数不等于右边操作数,或他们类型不同时返回TRUE;否则返回FALSE
(5) 逻辑运算符
a、 逻辑运算符两边操作数必须都是布尔型,且处理结果也是布尔型。
b、 &&(and)、||(or)、!(not)
c、 xor逻辑抑或:当两边操作数只有一个为TRUE时返回TRUE;否则返回FALSE
(6) 位运算符
(7) 其他运算符
a、=>、->、instanceof
b、: 三元运算符:(expr1) ? (expr2) : (expr3) expr1为真时,取expr2值;否则取expr3
c、`` 执行运算符:将反引号中的内容作为操作系统命令来执行,不同操作系统命令有所不同。如:$output = `ls
-la`; echo
“
$output”;
d、@
错误控制运算符:当将其放置在一个PHP表达式之前,该表达式可能产生的任何警告信息都被忽略掉。只对表达式有效,如可以放在变量、函数调用,以及常量之前;但不能放在函数或类的定义之前,也不能用于条件结构例如if和foreach等。
八、运算符优先级
(1)如果优先级相同,则使用从左到右的顺序。
(2)同时可以引用小括号()来控制运算顺序,任何在小括号内的运算将最优先进行。
九、表达式:任何有值的东西
变量函数:函数参考\与变量和类型有关的扩展\Variable Handing
1、var_dump():输出参数结构
2、isset():检测变量是否存在。NULL和被unset()处理的变量返回FALSE。
3、empty():如果变量是非空或非0,返回false。“ ”不算空。
4、unset():销毁一个变量
5、func_num_args():返回传递的参数的总和。
6、intval()、floatval()、strval():强类型转换
7、settype($foo, “integeter”):强类型转换并改变原变量类型