·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> php高级教程

php高级教程

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
php高级教程PHP - 多维数组

多维数组指的是包含一个或多个数组的数组。

注释:数组的维度指示您需要选择元素的索引数。

  • 对于二维数组,您需要两个索引来选取元素
  • 对于三维数组,您需要三个索引来选取元素
PHP - 两维数组
$cars = array  (  array("Volvo",22,18),  array("BMW",15,13),  array("Saab",5,2),  array("Land Rover",17,15)  );
如需访问 $cars 数组中的元素,我们必须使用两个索引(行和列):
<?phpecho $cars[0][0].": 库存:".$cars[0][1].", 销量:".$cars[0][2].".<br>";echo $cars[1][0].": 库存:".$cars[1][1].", 销量:".$cars[1][2].".<br>";echo $cars[2][0].": 库存:".$cars[2][1].", 销量:".$cars[2][2].".<br>";echo $cars[3][0].": 库存:".$cars[3][1].", 销量:".$cars[3][2].".<br>";?>
或者:
<?phpfor ($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>";}?>
PHP date() 函数用于对日期或时间进行格式化。语法
date(format,timestamp)
参数描述
format必需。规定时间戳的格式。
timestamp可选。规定时间戳。默认是当前时间和日期。
<?phpecho "今天是 " . date("Y/m/d") . "<br>";echo "今天是 " . date("Y.m.d") . "<br>";echo "今天是 " . date("Y-m-d") . "<br>";echo "今天是 " . date("l");?>
PHP 提示 - 自动版权年份

使用 date() 函数在您的网站上自动更新版本年份:

版权所有 2010-<?php echo date("Y")?>
获得简单的时间
  • h - 带有首位零的 12 小时小时格式
  • i - 带有首位零的分钟
  • s - 带有首位零的秒(00 -59)
  • a - 小写的午前和午后(am 或 pm)
<?phpecho "现在时间是 " . date("h:i:sa");?>
获得时区
<?phpdate_default_timezone_set("Asia/Shanghai");echo "当前时间是 " . date("h:i:sa");?>
通过 PHP mktime() 创建日期mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。语法
mktime(hour,minute,second,month,day,year)
创建日期是 2015-06-10 09:12:31am通过 PHP strtotime() 用字符串来创建日期

PHP strtotime() 函数用于把人类可读的字符串转换为 Unix 时间。

语法
strtotime(time,now)

PHP 在将字符串转换为日期这方面非常聪明,所以您能够使用各种值:

实例
<?php$d=strtotime("tomorrow");echo date("Y-m-d h:i:sa", $d) . "<br>";$d=strtotime("next Saturday");echo date("Y-m-d h:i:sa", $d) . "<br>";$d=strtotime("+3 Months");echo date("Y-m-d h:i:sa", $d) . "<br>";?>
<?php$d1=strtotime("December 31");$d2=ceil(($d1-time())/60/60/24);echo "距离十二月三十一日还有:" . $d2 ." 天。";?>
服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。PHP include 和 require 语句

通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。

include 和 require 语句是相同的,除了错误处理方面:

  • require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
  • include 只生成警告(E_WARNING),并且脚本会继续

假设我们有一个名为 "footer.php" 的标准的页脚文件,就像这样:

<?phpecho "<p>Copyright © 2006-" . date("Y") . " W3School.com.cn</p>";?>

如需在一张页面中引用这个页脚文件,请使用 include 语句:

<html><body><h1>欢迎访问我们的首页!</h1><p>一段文本。</p><p>一段文本。</p><?php include 'footer.php';?></body></html>
PHP 操作文件

PHP 拥有的多种函数可供创建、读取、上传以及编辑文件。

注意:请谨慎操作文件!

当您操作文件时必须非常小心。如果您操作失误,可能会造成非常严重的破坏。常见的错误是:

  • 编辑错误的文件
  • 被垃圾数据填满硬盘
  • 意外删除文件内容
PHP readfile() 函数

readfile() 函数读取文件,并把它写入输出缓冲。

假设我们有一个名为 "webdictionary.txt" 的文本文件,存放在服务器上,就像这样:

Ajax = Asynchronous javaScript and xmlCSS = Cascading Style SheetsHTML = Hyper Text Markup LanguagePHP = PHP Hypertext PReprocessorSQL = Structured Query LanguageSVG = Scalable Vector GraphicsXML = EXtensible Markup Language

读取此文件并写到输出流的 PHP 代码如下(如读取成功则 readfile() 函数返回字节数):

实例
<?phpecho readfile("webdictionary.txt");?>
PHP Open File - fopen()fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。如果 fopen() 函数未能打开指定的文件,下面的例子会生成一段消息:
<?php$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");echo fread($myfile,filesize("webdictionary.txt"));fclose($myfile);?>

文件会以如下模式之一打开:

模式描述
r打开文件为只读。文件指针在文件的开头开始。
w打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
r+打开文件为读/写、文件指针在文件开头开始。
w+打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。
PHP 读取文件 - fread()

fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。

如下 PHP 代码把 "webdictionary.txt" 文件读至结尾:

fread($myfile,filesize("webdictionary.txt"));
PHP 关闭文件 - fclose()

注释:用完文件后把它们全部关闭是一个良好的编程习惯。您并不想打开的文件占用您的服务器资源。

fclose() 需要待关闭文件的名称(或者存有文件名的变量):

<?php$myfile = fopen("webdictionary.txt", "r");// some code to be executed....fclose($myfile);?>
PHP 读取单行文件 - fgets()下例输出 "webdictionary.txt" 文件的首行:
<?php$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");echo fgets($myfile);fclose($myfile);?>
注释:调用 fgets() 函数之后,文件指针会移动到下一行。PHP 检查 End-Of-File - feof()

feof() 对于遍历未知长度的数据很有用。

下例逐行读取 "webdictionary.txt" 文件,直到 end-of-file:

<?php$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");// 输出单行直到 end-of-filewhile(!feof($myfile)) {  echo fgets($myfile) . "<br>";}fclose($myfile);?>
PHP 读取单字符 - fgetc()下例逐字符读取 "webdictionary.txt" 文件,直到 end-of-file:
<?php$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");// 输出单字符直到 end-of-filewhile(!feof($myfile)) {  echo fgetc($myfile);}fclose($myfile);?>
注释:在调用 fgetc() 函数之后,文件指针会移动到下一个字符。PHP 创建文件 - fopen()

如果您用 fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入(w)或增加(a)。

下面的例子创建名为 "testfile.txt" 的新文件。此文件将被创建于 PHP 代码所在的相同目录中:

$myfile = fopen("testfile.txt", "w")
PHP 文件权限

如果您试图运行这段代码时发生错误,请检查您是否有向硬盘写入信息的 PHP 文件访问权限。

PHP 写入文件 - fwrite()fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
<?php$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");$txt = "Bill Gates\n";fwrite($myfile, $txt);$txt = "Steve Jobs\n";fwrite($myfile, $txt);fclose($myfile);?>
PHP 覆盖(Overwriting)

如果现在 "newfile.txt" 包含了一些数据,我们可以展示在写入已有文件时发生的的事情。所有已存在的数据会被擦除并以一个新文件开始。

<?php$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");$txt = "Mickey Mouse\n";fwrite($myfile, $txt);$txt = "Minnie Mouse\n";fwrite($myfile, $txt);fclose($myfile);?>
创建上传脚本

"upload_file.php" 文件含有供上传文件的代码:

<?phpif ($_FILES["file"]["error"] > 0)  {  echo "Error: " . $_FILES["file"]["error"] . "<br />";  }else  {  echo "Upload: " . $_FILES["file"]["name"] . "<br />";  echo "Type: " . $_FILES["file"]["type"] . "<br />";  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";  echo "Stored in: " . $_FILES["file"]["tmp_name"];  }?>
  • $_FILES["file"]["name"] - 被上传文件的名称
  • $_FILES["file"]["type"] - 被上传文件的类型
  • $_FILES["file"]["size"] - 被上传文件的大小,以字节计
  • $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
  • $_FILES["file"]["error"] - 由文件上传导致的错误代码
上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

<?phpif ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000))  {  if ($_FILES["file"]["error"] > 0)    {    echo "Error: " . $_FILES["file"]["error"] . "<br />";    }  else    {    echo "Upload: " . $_FILES["file"]["name"] . "<br />";    echo "Type: " . $_FILES["file"]["t