词法结构
1. 大小写 在PHP中,关键字、函数名以及类名不区分大小写,但变量名是区分大小写的。
2. 分号、空格、换行、大括号 在PHP中,分号表示一个语句的结束。 一般来说,空格和换行在PHP中没有实际意义,但可以提高代码的可读性。 大括号表示一个语句块。
3. 注释 PHP支持多种注释方式。如Shell注释方式(以#开头)、C语言注释方式(以/*开头,以*/结尾)、C++语言注释方式(以//开头)。如: 12345 # Shell注释方式 /* C语言注释方式 */ // C++语言注释方式 4. 直接量 指直接出现在程序中的数据值,如数据、字符串。
5. 标识符、变量名、函数名、类名、常量 标识符是指给变量名、函数名和类名命名的一个名字。它的首字母为下划线和大小写字母(ASCII码的0x7F~0xFF也可以,不过一般没人用。),首字母以外可以由下划线、大小写字母以及数字0~9组成。
变量名以美元符($)开头,后接标识符。※变量名是区分大小写的 函数名和类名直接以标识符组成。※函数名和类名不区分大小写的 PHP的常量以define以定义。如 1 define('NAME', 'YUTUO');
6. 关键字 主要的关键字有以下一些 $HTTP_COOKIE_VARS $HTTP_ENV_VARS $HTTP_GET_VARS $HTTP_POST_FILES $HTTP_POST_VARS …
PHP学习(2) 数据类型
PHP有8种数据类型。
其中四种基本类型:整形、浮点型、字符串、以及布尔型;
两种复合类型:数组和对象;两种其它类型:资源和NULL。
1. 整形 整形是整数,可以有正负。通常范围是:-2147483648 ~ 2147483647。
写法有三种:十进制、八进制以及十六进制。它可以用函数 is_int($x) 来测试是否是一个整形。
如: 12345678910
$a = 10; //十进制
$a = -10; //十进制
$a = 010; //八进制
$a = -010; //八进制
$a = 0x10; //十六进制
$a = -0x10; //十六进制
if (is_int($a)) echo $a; …
PHP学习(3) 变量
在上一篇里说了变量是以美元符号($)作为前缀的标识符。如:$name。 变量可以存放任何类型的值;在PHP中没有显示的语法来声明变量。第一次使用变量时,变量就被创建了。
1. 变量的变量 变量的变量,即把一个变量名存在另一个变量中,如: 12 $name = 'value'; $$name = '1234'; 执行后,会创建一个$value的变量,它的值为'1234′。 2. 变量引用 在PHP中,变量也和指针差不多。变量引用表示把两个变量指向同一个值,别名的意思差不多吧。 因为是指向同一个地址,所以更改其中一个变量的值,另一个变量也会改变。要注意的是重设一个变量不会对改变另一个变量,这是因为重设变量只是把变量指向NULL,而没有修改另一个变量所指向的值。
函数的参数以及返回值都可以是一个变量引用,这样可以防止复制很大的数据类型(如:字符串、数组、类)。
示例代码:
12345678910111213141516171819 // 更改其中一个变量的值
$value_a = 'Test';
$value_b = & $value_a;
$value_b = 'Change';
print "\$value_a is $value_a";
print "\$value_b is $value_b"; …
PHP学习(4) 表达式和操作符
PHP的表达式是指通过一定的操作符计算出结果的一个语句。 PHP的操作符是基本上都是从C语言和Perl语言借鉴而来的。
1. 隐式类型转换 数字型计算时(加、减、乘、除、求余等),先把字符串转化为数字,如果转化成的数字是浮点数或者表达式中含有浮点数,则其它数字转化为浮点数进行计算,否则用整数进行计算。 字符串计算时(字符串连接),把数字转化为字符串再连接。
2. 递增和递减 递增和递减可以放到变量前或者变量后。放在变量前表示先加(减)1再计算,放在变量后表示先计算再加(减)1
3. 类型转换 类型转操作符有一些同义操作符。比如: (int)和(integer),(float)和(real),(bool)和(boolean) 附:下表列出了PHP的运算符,其中“优先级”从大到小(大的优先级高)表示操作符的优先级;“结合性”表示操作符是左结合还是右结合(“没有”表示没有结合性)。
优先级 结合性 操作符 说明 19 没有 new 创建对象 18 右 [] 数组下标 17 右 !,~ 逻辑取反,逐位取反 右 ++,– 递增,递减 右 (int),(double),(string),(array),(object) 类型转换 右 …
PHP学习(5) 流控制语句
在PHP中,流控制语句主要有条件语句和循环语句组成。其中,流控制语句有if/else和switch语句;循环语句有while和for语句。
1. IF语句 在PHP中,IF语句有两种语法结构。一种用大括号表示语句块,一种用冒号表示语句块。前者一般用于纯代码中,后者一般用于代码和HTML结合时。两种写法如下: 1234567891011121314151617 // 大括号表示语句块 if ($value) { // 操作; } elseif($value) { // 操作; } else { // 操作; } // 冒号表示语句块 if ($value) : // 操作; elseif($value) : // 操作; else : // 操作; endif; …
PHP学习(6) 包含代码和嵌入PHP
包含代码 在PHP中,包含代码有四个函数,include include_once require require_once。
include和require的主要区别是,如果文件不存在require函数会抛出一个致命错误,而include只会抛出一个警告。
include include_once 以及 require require_once,其中后缀为once的表示如果代码已经包含该文件,不再再次引用该文件。 嵌入PHP 在HTML中嵌入PHP有四种方法:XML形式、SGML形式、ASP形式、脚本形式。其中ASP形式默认是不支持的,必须在PHP配置文件[PHP.ini]中,修改asp_tags为On。
四种方法示例代码如下: 123456789101112 // XML形式
<?php
echo 'Hello, world';
?>
// SGML形式
<?
echo 'Hello, world';
?> // ASP形式
<%
echo 'Hello, world';
%>
// 脚本形式
<script language="php"> echo …
PHP学习(7) 函数
本文介绍函数的调用,定义,参数,以及返回值。
1. 函数调用 在PHP中,直接用函数名加参数即可调用函数,基本上有一点基础的人都能明白。如: 1234 $value = test(1); function test($value) { return $value++; }
2. 函数定义 在 PHP学习(1) 词法结构 中说过”标识符是指给变量名、函数名和类名命名的一个名字。它的首字母为下划线和大小写字母(ASCII码的0x7F~0xFF也可以,不过一般没人用。),首字母以外可以由下划线、大小写字母以及数字0~9组成。“函数名由标识符组成。因为PHP不支持函数重载,所以函数名不能有重名。 另外,函数可以嵌套申明,不过用处不是很大。嵌套申明的函数在没有调用外层函数时,是不能调用里层函数的。如下面的代码,如果单独调用inner函数会出现异常。 12345678 echo outter(); echo inner(); function outter() { function inner() { return 2; } return 1; }
3. 变量作用域 …
PHP学习(8) 引用字符串常量
在PHP中,有三种方法来定义一个字符串常量。即单引号、双引号以及来自于Unix Shell的here文档。
在介绍三种定义方法之前,先介绍一个变量转换。在PHP中,双引号以及来自于Unix Shell的here文档定义,都会把字符串的变量转换为变量的值。其中,字体串的变量也可以用大括号{}括起来,以示明显。
要注意的是在单引号字符串里是没有变量转换的。
如下代码:
复制代码代码如下:
$name = 'yutuo';
// 单引号字符串
echo 'My name is $name';
// 单引号字符串
echo "My name is $name";
echo "My name is {$name}";
// here文档字符串
echo <<< end
My name is $name
My name is {$name}
end;
其结果为(输出没有任何换行,为了容易理解,我在结果里换行了):
My name is $name
My name is yutuo
My name is yutuo
My name is yutuo
My name is yutuo
下面分别对单引号、双引号以及来自于Unix Shell的here文档这三种定义方法进行介绍。
1. 单引号字符串
单引号字符串指用单引号括起来的字符串。它只支持两种转义符,反斜线(\)以及单引号(‘),它们分别以(\\)和(\')来表示。
要注意的是单引号字符串不支持(\n)这种换行方式,但单引号字符串可以跨行定义。如下代码:
echo 'My name is yutuo.
I am studing PHP.';
其结果为(输出结果有换行):
My name is yutuo.
I am studing PHP.
2. 双引号字符串
双引号字符串指用双引号括起来的字符串。它只支持多种转义符,也可以跨行定义。书里说有大括号和中括号,但我在PHP5.3.1下测试是没有的。其支行的转义字符列表如下:
\" 双引号
\n 换行
\r 回车
\t 制表符
\\ 反斜线
\$ 美元符
\000~777 八进制ASCII码
\x00~FF 十六进制ASCII码
3. here文档
here文档可以很容易将多行文字放进程序。除了定义方法不同外,它的转义字符以及跨行定义和双引号字符串是完全一样的。
其定义方法为 <<< 标识符,结尾再以单行标识符结尾。要注意的是<<<和标识符之间有一个空格,结尾标识符前不能有空格。
参考代码可以看看最前面的。
参考资料:
PHP程序设计,2003,第四章 字符串,引用字符串常量