多维数组
多维数组指的是包含一个或多个数组的数组。
PHP 能理解两、三、四或五级甚至更多级的多维数组。
数组的维度指示您需要选择元素的索引数。
- 对于二维数组,您需要两个索引来选取元素
- 对于三维数组,您需要三个索引来选取元素
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
可以在 For 循环中使用另一个 For 循环,来获得 $cars 数组中的元素(我们仍需使用两个索引):
<?php
for ($row = 0; $row < 4; $row++) {
echo "<p><b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}
?>
日期和时间
- Date() 函数
Date() 函数把时间戳格式化为更易读的日期和时间。
时间戳是一种字符序列,它表示具体事件发生的日期和事件。
date(format,timestamp)
date() 函数会返回服务器的当前日期/时间!
a. 获得简单的日期
date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。
下面列出了一些常用于日期的字符:
- d - 表示月里的某天(01-31)
- m - 表示月(01-12)
- Y - 表示年(四位数)
- 1 - 表示周里的某天
其他字符,比如 "/", "." 或 "-" 也可被插入字符中,以增加其他格式。
b. 自动版权年份
网站下面的那个
© 2010-<?php echo date("Y")?>
c. 获得简单的时间
下面是常用于时间的字符:
- h - 带有首位零的 12 小时小时格式
- i - 带有首位零的分钟
- s - 带有首位零的秒(00 -59)
- a - 小写的午前和午后(am 或 pm)
下面的例子以指定的格式输出当前时间:
-
mktime() 返回日期的 Unix 时间戳
mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。
mktime(hour,minute,second,month,day,year)
-
strtotime() 把字符串转换为 Unix 时间戳
Include 文件包含
服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。
include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。
include 和 require 语句
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
include 和 require 语句是相同的,除了错误处理方面:
- require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
- include 只生成警告(E_WARNING),并且脚本会继续
include 'filename';
require 'filename';
include 实例
假设我们有一个名为 "footer.php" 的标准的页脚文件,就像这样:
如需在一张页面中引用这个页脚文件,请使用 include 语句:
请在此时使用 require:当文件被应用程序请求时。
请在此时使用 include:当文件不是必需的,且应用程序在文件未找到时应该继续运行时。
文件处理
PHP 拥有的多种函数可供创建、读取、上传以及编辑文件。
文件读取/打开
- readfile() 读取文件
readfile() 函数读取文件,并把它写入输出缓冲。
如果您想做的所有事情就是打开一个文件并读取器内容,那么 readfile() 函数很有用。
假设我们有一个名为 "webdictionary.txt" 的文本文件,存放在服务器上,就像这样:
读取此文件并写到输出流的 PHP 代码如下(如读取成功则 readfile() 函数返回字节数):
- fopen() 打开文件
fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。
fopen("webdictionary.txt", "r")
模式
-
fread() 读取文件
fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
fread($myfile,filesize("webdictionary.txt"));
-
fclose() 关闭文件
fclose() 函数用于关闭打开的文件。
将用完的文件关闭可以减少不必要的服务器资源占用
fclose($myfile);
-
fgets() 读取单行文件
fgets() 函数用于从文件读取单行。
下例输出 "webdictionary.txt" 文件的首行:
调用 fgets() 函数之后,文件指针会移动到下一行。所以,你可以通过for循环输出文件的一行行内容。 -
feof() 检查 End-Of-File文件尾
feof() 函数检查是否已到达 "end-of-file" (EOF)。
feof() 对于遍历未知长度的数据很有用。
下例逐行读取 "webdictionary.txt" 文件,直到 end-of-file:
-
fgetc() 读取单字符
fgetc() 函数用于从文件中读取单个字符。
和fgets()一样,调用后文件指针会移动到下一个字符。
下例逐字符读取 "webdictionary.txt" 文件,直到 end-of-file:
文件创建/写入
- fopen() 创建文件
在 PHP 中,创建文件所用的函数与打开文件的相同。
如果用 fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入(w)或增加(a)。
下面的例子创建名为 "testfile.txt" 的新文件。此文件将被创建于 PHP 代码所在的相同目录中:
$myfile = fopen("testfile.txt", "w")
如果运行这段代码时发生错误,请检查是否有向硬盘写入信息的 PHP 文件访问权限。 - fwrite() 写入文件
fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
fwrite($myfile, $txt);
如果一个PHP文件中对同一个文件调用两次写入函数,那第二次写入内容加在第一次后面
而,如果执行PHP文件前,待写入文件已有内容,那么会被覆盖
文件上传
一个文件上传表单
-
enctype
<form>
标签的 enctype 属性规定了在提交表单时,数据如何编码。
默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
-
type="file"
<input>
标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
-
创建上传脚本
$_FILES,第一个参数是上传表单中<input>
标签的name
值,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
-
上传限制
增加对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:
-
保存被上传的文件
上面的例子在服务器的 PHP 临时文件夹tmp创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本执行结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。