一、多维数组

   一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组。

<?php 
$arr = array(
    "first"=>array("1","2","3","<br>"),
    "sencond"=>array("4","5","6","<br>"),
    "third"=>array("7","8","9","<br>")
);
print_r($arr);//能够格式化的输出数组内容
?>

二、data();日期函数

  PHP date() 函数可把时间戳格式化为可读性更好的日期和时间。

| 1 | string date ( string $format [, `int $timestamp ] )` |
| - | - |

| format | 必需。规定时间戳的格式。 |
| - | - |
| timestamp | 可选。规定时间戳。默认是当前的日期和时间。 |

date() 函数的第一个必需参数 format 规定了如何格式化日期/时间。

这里列出了一些可用的字符:

  • d - 代表月中的天 (01 - 31)
  • m - 代表月 (01 - 12)
  • Y - 代表年 (四位数)
<?php 
echo date("Y-M-d--N---H-i--s--A"),"<br>";//format格式字
echo date("L");//是否为闰年     如果是闰年为 1,否则为 0
?>

| format 字符 | 说明 | 返回值例子 |
| - | - | - |
| | --- | --- |
| d | 月份中的第几天,有前导零的 2 位数字 | 0131 |
| D | 星期中的第几天,文本表示,3 个字母 | MonSun |
| j | 月份中的第几天,没有前导零 | 131 |
| l("L"的小写字母) | 星期几,完整的文本格式 | SundaySaturday |
| N | ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) | 1(表示星期一)到 7(表示星期天) |
| S | 每月天数后面的英文后缀,2 个字符 | stndrd 或者 th。可以和 j 一起用 |
| w | 星期中的第几天,数字表示 | 0(表示星期天)到 6(表示星期六) |
| z | 年份中的第几天 | 0365 |
| 星期 | --- | --- |
| W | ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) | 例如:42(当年的第 42 周) |
| | --- | --- |
| F | 月份,完整的文本格式,例如 January 或者 March | JanuaryDecember |
| m | 数字表示的月份,有前导零 | 0112 |
| M | 三个字母缩写表示的月份 | JanDec |
| n | 数字表示的月份,没有前导零 | 112 |
| t | 给定月份所应有的天数 | 2831 |
| | --- | --- |
| L | 是否为闰年 | 如果是闰年为 1,否则为 0 |
| o | ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) | Examples: 1999 or 2003 |
| Y | 4 位数字完整表示的年份 | 例如:19992003 |
| y | 2 位数字表示的年份 | 例如:9903 |
| 时间 | --- | --- |
| a | 小写的上午和下午值 | ampm |
| A | 大写的上午和下午值 | AMPM |
| B | Swatch Internet 标准时 | 000999 |
| g | 小时,12 小时格式,没有前导零 | 112 |
| G | 小时,24 小时格式,没有前导零 | 023 |
| h | 小时,12 小时格式,有前导零 | 0112 |
| H | 小时,24 小时格式,有前导零 | 0023 |
| i | 有前导零的分钟数 | 0059> |
| s | 秒数,有前导零 | 0059> |
| u | 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 | 示例: 654321 |
| 时区 | --- | --- |
| e | 时区标识(PHP 5.1.0 新加) | 例如:UTCGMTAtlantic/Azores |
| I | 是否为夏令时 | 如果是夏令时为 1,否则为 0 |
| O | 与格林威治时间相差的小时数 | 例如:+0200 |
| P | 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) | 例如:+02:00 |
| T | 本机所在的时区 | 例如:ESTMDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。 |
| Z | 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 | -4320043200 |
| 完整的日期/时间 | --- | --- |
| c | ISO 8601 格式的日期(PHP 5 新加) | 2004-02-12T15:19:21+00:00 |
| r | RFC 822 格式的日期 | 例如:Thu, 21 Dec 2000 16:01:07 +0200 |
| U | 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 | 参见 time() |

三、外部文件引入

  在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。

include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。

include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

  • require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
  • include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

  因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。

包含文件省去了大量的工作。这意味着您可以为所有网页创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。

  示例:

<?php 
include 'header.php'; //一般放在 PHP 文件的最前面,程序在执行前就会先导入要引用的文件
if (1 < 2) {
    require 'require.php';//一般放在程序的流程控制中,当程序执行时碰到才会引用,简化程序的执行流程。
}
?>

四、文件处理

    fopen(name,type) 函数用于在 PHP 中打开文件。

    此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件(类似于Python中的文件处理方式)

文件打开模式:

| 模式 | 描述 |
| :- | :- |
| r | 只读。在文件的开头开始。 |
| r+ | 读/写。在文件的开头开始。 |
| w | 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| w+ | 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
| a | 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。 |
| a+ | 读/追加。通过向文件末尾写内容,来保持文件内容。 |
| x | 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。 |
| x+ | 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。 |

    fclose() 函数用于关闭打开的文件

feof() 函数检测是否已到达文件末尾(EOF)。

$file = fopen("demo.txt", "a+") or exit("无法打开文件!");//文件打开,以读写的模式,在文件的开头开始。
while (!feof($file)) {
    echo fgets($file)."<br>";
}
$write = "end";
file_put_contents("demo.txt", $write, FILE_APPEND | LOCK_EX);
fclose($file);//文件关闭
?>

五、PHP Cookie

  什么是Cookie?

    cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

| 1 | setcookie(name, value, expire, path, domain); |
| - | - |

setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于html标签之前。

六、PHP Session

  PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

  您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

  示例(PHP Session 实现一个页面的访问量记录):

<?php session_start();//开始存储session数据?>
<html>
<head>
<title>PHP高级教程</title>
</head>
<body>
<?php
if(isset($_SESSION['views']))
{
    $_SESSION['views']=$_SESSION['views']+1;
}
else
{
    $_SESSION['views']=1;
}
echo "浏览量:".$_SESSION['views'];

//session的销毁
if(isset($_SESSION['views']))
{
    unset($_SESSION['views']);//unset() 函数用于释放指定的 session 变量
}
//session_destroy();//也可以通过调用 session_destroy() 函数彻底销毁 session
                    //session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
?>
</body>
</html>

七、PHP 错误处理

  在创建脚本和 Web 应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。

  3种不同的错误处理方法:

  • 简单的 "die()" 语句
  • 自定义错误和错误触发器
  • 错误报告

  1、die()语句处理

<?php
if(!file_exists("welcome.txt"))
{
    die("文件不存在");
}
else
{
    $file=fopen("welcome.txt","r");
}
?>

  2、自定义错误处理 

  创建一个自定义的错误处理器非常简单。我们很简单地创建了一个专用函数,可以在 PHP 中发生错误时调用该函数。该函数必须有能力处理至少两个参数 (error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 和 error context)。

  error_function(error_level,error_message, error_file,error_line,error_context)

| 参数 | 描述 |
| :- | :- |
| error_level | 必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。 |
| error_message | 必需。为用户定义的错误规定错误消息。 |
| error_file | 可选。规定错误发生的文件名。 |
| error_line | 可选。规定错误发生的行号。 |
| error_context | 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。 |

<?php
// 错误处理函数
function customError($errno, $errstr)
{
    echo "<b>Error:</b> [$errno] $errstr<br>";
    echo "脚本结束";
    die();
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
    trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

  3、错误记录

  在默认的情况下,根据在 php.ini 中的 error_log 配置,PHP 向服务器的记录系统或文件发送错误记录。通过使用 error_log() 函数,您可以向指定的文件或远程目的地发送错误记录。

八、PHP 异常处理

    

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

当异常被触发时,通常会发生:

  • 当前代码状态被保存
  • 代码执行被切换到预定义(自定义)的异常处理器函数
  • 根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本

我们将展示不同的错误处理方法:

  • 异常的基本使用
  • 创建自定义的异常处理器
  • 多个异常
  • 重新抛出异常
  • 设置顶层异常处理器

注释:异常应该仅仅在错误情况下使用,而不应该用于在一个指定的点跳转到代码的另一个位置。

  

  

  要避免出现的错误,我们需要创建适当的代码来处理异常。

  适当的处理异常代码应该包括:

  1. Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
  2. Throw - 里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"。
  3. Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。

  异常的规则:

  • 需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。
  • 每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
  • 使用多个 catch 代码块可以捕获不同种类的异常。
  • 可以在 try 代码块内的 catch 代码块中抛出(再次抛出)异常。

  简而言之:如果抛出了异常,就必须捕获它。

Last modification:August 16th, 2020 at 06:45 pm
如果觉得我的文章对你有用,请随意赞赏