第一章 快速入门
1.字符串的连接
- 用一个字符串的内容来代替一个变量的操作就是插值(interpolation)。
- 双引号("")中,变量名称将被变量值所替代;而在单引号('')中,变量名称,或者任何其他文本都会不仅修改而发送给浏览器。
2.变量于文本
- 变量是表示数据的符号。字符串是数据本身。
- 第三种制定字符串的方法:heredoc语法(<<<),通过指定一个用来结束字符串的结束标记,Heredoc语法允许指定长字符串。
3.理解标识符
- 标识符是变量的名称。
- 标识符可以是任何长度,而且可以由任何字母、数字、下划线组成;
- 标识符不能以数字开始;
- 在PHP中,标识符是区分大小写的;
- 一个变量名称可以与一个函数名称相同;
- 不能创建一个具有与已有函数同名的函数。
4.PHP的数据类型
- 特定的内置函数(例如数据库函数)将返回resource类型的变量。它们都代表外部资源(例如数据库连接)
- 基本上不能直接操作一个resource变量,但是通常它们都将被函数返回,而且必须具有作为参数传递给其他函数。
5.类型转换
- 使用类型转换,可以将一个变量活值转换成另一个类型。
- 只需在希望进行类型转换的变量之前的圆括号中插入需要转换的临时数据类型即可。
$totalqty=0; $totalamount=(float)$totalqty;
- 解释:取出保存在$totalqty的值,并将其解释成一个浮点类型,并且将其保存在$totalamonut中。
6.声明和使用常量
- 一个常量可以保存一个值,例如一个变量值,但是常量值一旦被设定后,在脚本的其他地方就不能再更改。
- 用define函数定义常量。
- 例如:
define('OILPRICE',10);
- 例如:
- 常量名称都是由大写字母组成的
- 常量和变量之间的一个重要不同点在于引用一个常量的时候,它前面并没有$符号。
- 常量可以自己定义,PHP还预定义了许多常量。可以通过后phpinfo()函数来了解。
- 常量只可以保存布尔值(bool)、整数(int)、浮点数(float)或字符串(string)数据。
7.理解变量的作用域
- 作用域是指在一个脚本中某个变量可以使用或可见的范围。
- PHP有6项作用域规则
- 内置超级全局变量可以在脚本的任何地方使用和可见;
- 常量,一旦被声明,将可以在全局可见;也就是说,它们可以在函数内外使用;
- 在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部;
- 函数内部使用的变量声明为全局变量时,其名称要与全局变量名称一致;
- 在函数内部创建冰杯声明为静态的变量无法再函数外部可见,但是可以在函数的多次执行过程中保持该值;
- 在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。
- PHP有6项作用域规则
8.前置递增递减(++$a和- -$a)和后置递增递减运算符($a++和$a- -)
- 所有递增操作符都有两个功能:
- 将变量增加1;
- 增加后的值赋给原变量。
- ++$a前置递增
- 运行结果是:首先将变量$a加1,再将加1后的结果复制给原变量$a。
-
$a=4;
echo ++$a;
echo $a;
-屏幕显示为:2 2
- $a++后置递增
- 运行结果是$a的值被返回并显示在屏幕上,然后,$a再加1。
-
$a=4;
echo $a++;
echo $a;
-
- 屏幕显示为:1 2
- 运行结果是$a的值被返回并显示在屏幕上,然后,$a再加1。
9.引用操作符(&)
- 通常来说(既在不使用&符号时),在将一个变量的值(a)赋给另一个变量(b)的时候,先产生原变量的一个副本,然后再将他保存在内存的其他地方。原变量(a)改变时,变量(b)并不跟着一起改变。
-
$a=4;
$b=$a;
$a=6;
echo "a=".$a."<br />b=".$b;
- 屏幕显示为:
-
- 如果使用了引用操作符&则$b也会跟着$a进行更改。
-
$a=4;
$b=&$a;
echo "a=".$a."<br />b=".$b;
- 屏幕显示为:
-
- 所以引用操作符&就像一个别名,而不是一个指针。$a和$b都指向了内存中相同的地址。
- 可以通过重置(unset($X))来改变所指向的地址。
unset($a);
- 该重置不会改变$b的值,但是可以破坏$a和值7保存在内存中的连接。
- 例如:
-
$a=4;
$b=&$a;
unset($a);
echo "a=".$a."<br />b=".$b;
-
屏幕会显示为:
- notice的意思是未定义的变量a在第6行。
-
10.比较操作符
- 恒等操作符(===)三个等于号,只有当恒等操作符两边的操作数相等并且具有相同的数据类型,其返回值才为true。
11.操作符优先级
- 普通的圆括号是优先级最高的操作符。它的作用就是提高圆括号内部操作符的优先级;这样在需要的时候,就可以避开操作符的优先级法则。
- 可以在一个表达式中使用任意个圆括号,最里层圆括号的表达式将最先计算。
- 优先级从高到低
12.关于print和echo
- print语言机构等价于echo语句。这两个结构都将生成输出;
- print和echo都不是真正的函数,但是都可以用带有参数的函数形式进行调用;
- print和echo都可以当作一个操作符:只要将要显示的字符串放置在echo或print关键字之后;
- 以函数形式调用print将使其返回一个值(1);
- print的速度要比echo慢。
13.关于gettype()和settype()
要使用gettype()函数,必须先给它传递一个变量。它将确定变量的类型并返回一个包含类型名称的字符串;如果变量类型不是标准类型之一,该函数就会返回"unknown type"。
要使用settype()函数,必须先给它传递一个要被改变类型的变量,以及一个包含了上述类型列表中某个类型的字符串。
$foo="5bar"; //string
$bar=true; //bool
settype($foo,"integer"); //integer
settype($bar,"string"); //string
echo gettype($foo)."<br />".gettype($bar);
-
屏幕显示:
14.PHP的特定类型测试函数
- is_array():检查变量是否是数组;
- is_double()、is_float()、is_real():检查变量是否是浮点数;
- is_long()、is_int()、is_integer():检查变量是否是整数;
- is_string():检查变量是否是字符型;
- is_bool():检查变量是否是布尔型;
- is_object():检查变量是否是一个对象;
- is_resource():检查变量是否是一个资源;
- is_null():检查变量是否为null;
- is_scalar():检查变量是否是标量,即一个整数、布尔值、字符串或浮点数;
- is_numeric():检查该变量是否是任何类型的数字或数字字符串;
- is_callable():检查变量是否是有效的函数名称。
15.测试变量状态
- isset()函数:该函数需要一个变量名称作为参数,如果这个变量存在,则返回true,否则返回false;
bool isset(mixed var);[;mixed var[,...]])
- unset()函数:该函数将销毁一个传进来的变量。
-
void unset(mixed var);[;mixed var[,...]])
-empty()函数:该函数可以用来检查一个变量是否存在,以及它的值是否为非空或非0,相应的返回值为true或false。 bool empty(mixed var);
-
16.while循环
- while循环语句只要其条件为真,就会不断重复执行代码块。
- 当不知道所需的重复次数时,可以使用while循环语句。如果要求一个固定次数的重复,可以考虑使用for循环语句。
17.for循环
- while循环和for循环是等价的,区别只是在于for循环更加紧凑。
- foreach循环语句是专门用于数组的使用。
18.do...while循环
- do....whild循环与while循环不同,因为它的测试条件放在整个语句块的最后;也就意味着do....while循环中的语句或语句块至少会执行一次。
19.关于跳出
- 如果希望终止一个循环,可以使用break语句。使用了break语句后,脚本就会从循环体后面的第一条语句处开始执行。
- 如果希望跳到下一次循环,可以使用continue语句。
- 如果希望结束整个PHP脚本的执行,可以使用exit语句。