注意:如果方括号内没指定键名,则取当前最大整数索引值,新的键名将是该值 + 1。如果当前还没有整数索引,则键名将为 0。如果制定的键名已经有值了,该值将被覆盖。 如:
// 有些键没有指定健名的数组 array(5 => 43, 32, 56, \
// 上数组等同于这个数组
array(5 => 43, 6 => 32, 7 => 56, \?>
value值可以是任何值。 数组元素的修改: 语法格式:
$arr[key] = value; $arr[] = value;
// key 可以是 integer 或者 string // value 可以为任何值。
如果 $arr 还不存在,将会新建一个。这也是一种定义数组的替换方法。要改变一个值,只要给它赋一个新值。
数组元素和数组的删除:
unset(数组名[键名]) 删除数组元素 unset(数组名) 删除整个数组 例:
$arr = array(5 => 1, 12 => 2);
$arr[] = 56; // 本行等价于 $arr[13] = 56;
$arr[\增加一个新的元素,键名为%unset($arr[5]); // 将键名为5的元素删除 unset($arr); // 将整个数组删除 ?>
常用数组实用函数、语句结构
有相当多的实用函数作用于数组,更多资料,可参见有关资料中的数组函数库部分。 ? count -- 统计数组中的元素的个数 语法格式:
int count (数组名) 例 count() 例子
$a[0] = 1; $a[1] = 3; $a[2] = 5;
$result = count ($a); // $result == 3
$b[0] = 7; $b[5] = 9; $b[10] = 11;
$result = count ($b); // $result == 3;
PHP讲义 第 46 页 共 91 页
?>
? foreach ——控制结构:遍历数组 两种语法格式: 第一种格式
foreach (array_expression as $value)
statement
遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 第二种格式
foreach (array_expression as $key => $value) statement
做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量 $key。 ? list——把数组中的值赋给一些变量 语法格式:void list ( mixed ... )
list() 用一步操作给一组变量进行赋值。 list() 仅能用于数字索引的数组并假定数字索引从 0 开始。 例: list() 例子
$info = array('张三', '男', '25岁');
// 取出数组$info中所有元素值,分别赋值到三个变量中 list($name, $sex, $age) = $info;
print \是$sex 性,今年$age 岁\\n\
//取出数组$info中部分元素值,分别赋值到相应变量中 list( , , $age) = $info; print \张三今年$age 岁\\n\?>
(6)资源型
一个资源是一个特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。 资源类型变量用于保存打开文件、数据库连接、图形画布区域等的特殊句柄。
以数据库应用为例,在同时有众多的数据库连接存在时,要进行查询和关闭连接等操作,必须指明这些操作是对哪个连接的,所以有必要给每个连接赋予一个标识值,一般是整数。这种标识值的数据类型称为资源型。 具体应用见第四章。 (7)NULL 型
特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。 在下列情况下一个变量被认为是 NULL:
被赋值为 NULL。 尚未被赋值。 被 unset()。 语法
NULL 类型只有一个值,就是大小写敏感的关键字 NULL。
8.运算符
(1)算术运算符
加(+)、减(-)、乘(*)、除(/)、取模(求余:%) $a % $b:取模运算,求$a 除以 $b 的余数。
PHP讲义 第 47 页 共 91 页
除号(―/‖)总是返回浮点数,即使两个运算数是整数(或由字符串转换成的整数)也是这样。 注: 取模 $a % $b 在 $a 为负值时的结果也是负值。 (2)赋值运算符
基本的赋值运算符是―=‖。
适合于所有二元算术和字符串运算符的―组和运算符‖例如: $a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5; $b = \
$b .= \?>
(3)错误控制运算符
错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。 (4)比较运算符
为避免出错,$a若与$b类型不同,请先转换成同类型,再比较。
比较运算符:相等(==)、不等(!=或<>)、小于(<)、小于等于(<=)、大于(>)、大于等于(>=) (5)逻辑运算符
与(and,&&)、或(or,||)、非(!)、异或(xor) (6)字符串连接操作符 连接运算符(―.‖):
如$c=$a.$b,它将$a和$b拼接成一个新的字符串$c。 连接赋值运算符(―.=‖):
如$a.=$b,它将字符串$b的内容附加在字符串$a的后面。
$a = \
$a.= \ // now $a contains \?>
9.函数
主要分为系统函数、用户自定义函数。
(1)系统函数。PHP定义的系统函数十分丰富,多达162个函数库,用于162方面的处理。如上述用于变量检测、数组循环等,分别属于变量处理函数库和数组函数库。用户按照说明使用即可。
常用的是:数组函数库、变量函数库、字符串处理函数库、MySQL 函数库(将在第四章介绍)、时间日期函数库、HTTP 相关函数库、数学函数库。
数组函数库、变量函数库中的常用函数已经在前面介绍,下面介绍其余函数库中常用的函数。 ? 字符串处理函数库
①int strlen (字符串名) – 得到字符串的长度 ②substr()——截取子串
string substr (string string, int start [, int length] ) 例. substr()基本用法
echo substr('abcdef', 1); // bcdef echo substr('abcdef', 1, 3); // bcd echo substr('abcdef', 0, 4); // abcd echo substr('abcdef', 0, 8); // abcdef echo substr('abcdef', -1, 1); // f
PHP讲义 第 48 页 共 91 页
?>
如果start 是负数, 将从母串的末尾开始反向截取
$rest = substr(\ // returns \$rest = substr(\ // returns \$rest = substr(\?>
③ord()——取字符的ASCII码 int ord ( string string )
④str()——取ASCII码对应的字符 string chr ( int ascii )
⑤trim()——去掉串首串尾的空格 string trim ( string str) ⑥ltrim()——去掉串首的空格 string ltrim ( string str) ⑦rtrim()——去掉串尾的空格 string rtrim ( string str)
⑧explode()——将字符串拆分成数组
array explode ( string separator, string string)
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。
如果 separator 为空字符串(\),explode() 将返回 FALSE。如果 separator 所包含的值在 string 中找不到,那么 explode() 将返回包含 string 单个元素的数组。 例. explode() 示例
// 示例 1
$pizza = \
$pieces = explode(\注意这里用空格作为分隔符,而不是空字符串 echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 ?>
⑨implode()——将数组元素联成字符串 string implode ( string glue, array pieces )
$array = array('lastname', 'email', 'phone'); $comma_separated = implode(\
echo $comma_separated; // lastname,email,phone ?>
? 时间日期函数库
①date()——格式化一个本地时间/日期 string date ( string format ) format 说明 Y 4 位数字年份 m 2位数字月份 d 2位数字,月份中的第几天 表 常用格式字符串(format) 返回值例子 例如:1999 或 2003 01 到 12 01 到 31 PHP讲义 第 49 页 共 91 页
format 说明 H 2位数字小时,24 小时格式 i 2位数字分钟 s 2位数字秒
返回值例子 00 到 23 00 到 59 00 到 59 // 假设现在的服务器时间是: 2001年3月10日,5:16:18 pm $today = date(\ // 20010310 $time = date(\
$todaytime1=date(―Ymd,H:i:s‖);// 20010310,17:16:18 $todaytime2=date(―Y-m-d,H:i:s‖);// 2001-03-10,17:16:18
$todaytime3=date(―Y年m月d日,H时:i分:s秒‖);// 2001年03月10日,17时:16分:18秒 ?>
与date()具有类似功能的函数是getdate(),可供参考使用。 ? HTTP 相关函数库 header(string)函数 向浏览器发出头信息。
头信息 (header) 是服务器以 HTTP 协议输出HTML到浏览器前所送出的字串,在头信息与 HTML 文件之间尚需空一行分隔。
函数 header()函数需要在输出流中增加头信息,但是头信息只能在其它任何输出内容之前发送。在使用这些函数前不能有任何(如HTML)的输出。
如果你的PHP程序中需要输出 HTML(如要使用echo等输出什么东西时 )前,也需要使用header()函数,那么,要先用header()函数输出所有的头信息,否则会出错。 可能会返回的错误消息:
―Warning: Cannot send session cookie - headers already sent...‖或者―Cannot add header information - headers already sent...‖。
头信息参数string的形式:常见的头信息有下面三种之一,并只能出现一次。 Location: URL(掌握) Content-Type: xxxx/yyyy Status: nnn xxxxxx
header(―Location:URL‖)
作用:服务器直接向浏览器发送一个网络地址为URL的页面。 举例:
Header(\ exit; ?>
作用类似于JavaScript的window.location=URL,但后者是浏览器向URL中的服务器请求这个URL,该服务器受到这个请求后,将该服务器上地址为URL的页面返回给浏览器,整个过程是请求-响应(两段),前者仅响应(一段)。 ? 数学函数库 floor -- 向下取整
语法格式:float floor ( float value )
返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。 例 floor() 例子
PHP讲义 第 50 页 共 91 页