PHP高级教程

🐌博主主页:🐌​倔强的大蜗牛🐌​

📚专栏分类:PHP

📚参考教程:菜鸟\编程网
❤️感谢大家点赞👍收藏⭐评论✍️

目录

[一、PHP 多维数组](#一、PHP 多维数组)

[二、PHP date() 函数](#二、PHP date() 函数)

[PHP Date() - 格式化日期](#PHP Date() - 格式化日期)

[三、PHP 包含文件](#三、PHP 包含文件)

[PHP include 和 require 语句](#PHP include 和 require 语句)

[四、PHP 文件处理](#四、PHP 文件处理)

打开文件

关闭文件

检测文件末尾(EOF)

逐行读取文件

逐字符读取文件

[五、PHP Cookie](#五、PHP Cookie)

[Cookie 是什么?](#Cookie 是什么?)

[如何创建 Cookie?](#如何创建 Cookie?)

[如何取回 Cookie 的值?](#如何取回 Cookie 的值?)

[六、PHP Session](#六、PHP Session)

[七、PHP 发送电子邮件](#七、PHP 发送电子邮件)

[八、PHP 错误处理](#八、PHP 错误处理)

[九、PHP 异常处理](#九、PHP 异常处理)

[十、PHP 过滤器](#十、PHP 过滤器)

[什么是 PHP 过滤器?](#什么是 PHP 过滤器?)

函数和过滤器

[Validating 和 Sanitizing](#Validating 和 Sanitizing)

[十一、PHP JSON的](#十一、PHP JSON的)

[JSON 函数](#JSON 函数)

json_encode

json_decode


一、PHP 多维数组

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

在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。

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

二维数组语法格式:

array (

array (elements...),

array (elements...),

...

)

php 复制代码
<?php
// 二维数组:
$cars = array
(
    array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100)
);
?>

二、PHP date() 函数

PHP date() 函数用于格式化时间/日期。

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

时间戳是一个字符序列,表示一定的事件发生的日期/时间。

语法:

string date ( string format \[, int timestamp ] )

参数 描述
格式 必需。规定时间戳的格式。
时间戳 可选。规定时间戳。默认是当前的日期和时间。

PHP Date() - 格式化日期

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

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

  • d - 代表月中的天 (01 - 31)
  • M - 代表月 (01 - 12)
  • Y - 代表年 (四位数)

可以在字母之间插入其他字符,比如 "/"、"." 或者 "-",这样就可以增加附加格式了:

php 复制代码
<?php
echo date("Y/m/d") . "<br>";
echo date("Y.m.d") . "<br>";
echo date("Y-m-d");
?>

三、PHP 包含文件

PHP include 和 require 语句

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

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

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

语法:

include 'filename';

或者

require 'filename';

假设我们有一个定义变量的包含文件("vars.php"):

php 复制代码
<?php
$color='red';
$car='BMW';
?>

这些变量可用在调用文件中:

php 复制代码
<html>
<head>
<meta charset="utf-8">
<title>崛强的大蜗牛</title>
</head>
<body>

<h1>欢迎来到我的主页!</h1>
<?php 
include 'vars.php';
echo "I have a $color $car"; // I have a red BMW
?>

</body>
</html>

四、PHP 文件处理

打开文件

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

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

**注释:**如果 fopen() 函数无法打开指定文件,则返回 0 (false)。

关闭文件

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

php 复制代码
<?php
$file = fopen("test.txt","r");

//执行一些代码

fclose($file);
?>

检测文件末尾(EOF)

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

if (feof($file)) echo "文件结尾";

逐行读取文件

fgets() 函数用于从文件中逐行读取文件。

**注释:**在调用该函数之后,文件指针会移动到下一行。

逐字符读取文件

fgetc() 函数用于从文件中逐字符地读取文件。

**注释:**在调用该函数之后,文件指针会移动到下一个字符。

Cookie是一种小型文本文件,存储在用户的计算机或移动设备上。它由网站创建,用于记住用户的一些信息,如登录状态、偏好设置等。当用户访问同一网站时,浏览器会将Cookie发送给服务器,以便服务器识别用户并提供个性化体验。

如何创建 Cookie?

setcookie() 函数用于设置 cookie。

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

语法:

setcookie(name, value, expire, path, domain);

PHP 的 $_COOKIE 变量用于取回 cookie 的值。

六、PHP Session

PHP Session 变量是一种在服务器端存储用户会话数据的机制。会话数据是指在用户与网站进行交互时产生的数据,如登录状态、购物车内容等。通过使用 Session 变量,开发者可以在用户访问网站的不同页面时跟踪和保存用户的状态信息。

在 PHP 中,使用 Session 变量的基本步骤如下:

  • 启动会话:在脚本开始时,使用 session_start() 函数启动会话。这将启动一个新的会话或者重用现有会话(如果已经存在)。
php 复制代码
session_start();
  • 设置 Session 变量:使用 $_SESSION 超全局数组来设置和获取 Session 变量。将数据存储在 $_SESSION 数组中,服务器会在用户的每次请求之间保留这些数据。
php 复制代码
$_SESSION['username'] = 'JohnDoe';
$_SESSION['logged_in'] = true;
  • 获取 Session 变量:在其他页面中,可以通过 $_SESSION 数组访问已设置的 Session 变量。
php 复制代码
echo 'Welcome, ' . $_SESSION['username'] . '!';
  • 销毁 Session 变量:当用户登出或会话结束时,可以使用 session_destroy() 函数销毁会话数据。
php 复制代码
session_destroy();
  • 删除某个 Session 变量:要删除某个特定的 Session 变量,可以使用 unset() 函数
php 复制代码
unset($_SESSION['username']);

七、PHP 发送电子邮件

PHP mail() 函数用于从脚本中发送电子邮件。

语法:

mail(to,subject,message,headers,parameters)

参数 描述
to 必需。规定 email 接收者。
subject 必需。规定 email 的主题。**注释:**该参数不能包含任何新行字符。
message 必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。每行应该限制在 70 个字符内。
headers 可选。规定附加的标题,比如 From、Cc 和 Bcc。应当使用 CRLF (\r\n) 分隔附加的标题。
parameters 可选。对邮件发送程序规定额外的参数。

八、PHP 错误处理

在 PHP 中,错误处理是确保代码在出现问题时能够正常运行的关键部分。PHP 提供了多种错误处理机制,包括错误报告、异常处理和自定义错误处理函数。

  • 错误报告:PHP 默认会报告大多数错误,例如语法错误、运行时错误等。可以通过设置 error_reportingdisplay_errors 配置选项来控制错误报告的级别和显示方式。
php 复制代码
// 设置错误报告级别
error_reporting(E_ALL); // 报告所有错误

// 设置是否在页面上显示错误
ini_set('display_errors', 1); // 在页面上显示错误
  • 异常处理:PHP 提供了异常处理机制,允许开发者在代码中抛出和捕获异常。使用 **trycatchthrow**语句来处理异常。
php 复制代码
try {
    // 可能抛出异常的代码
    throw new Exception("An error occurred");
} catch (Exception $e) {
    // 处理异常的代码
    echo "Caught exception: " . $e->getMessage();
}
  • 自定义错误处理函数:PHP 允许开发者定义自己的错误处理函数,该函数会在发生错误时被调用。使用 set_error_handler() 函数来设置自定义错误处理函数。
php 复制代码
function custom_error_handler($error_number, $error_message, $error_file, $error_line) {
    // 自定义错误处理逻辑
    echo "Error: [$error_number] $error_message in $error_file on line $error_line";
}

// 设置自定义错误处理函数
set_error_handler("custom_error_handler");
  • 断言:PHP 提供了断言机制,允许开发者在代码中检查条件是否为真。如果条件为假,将抛出一个错误。使用 assert() 函数来使用断言。
php 复制代码
// 设置断言处理函数
assert_options(ASSERT_CALLBACK, "assert_handler");

function assert_handler($file, $line, $code) {
    // 自定义断言处理逻辑
    echo "Assertion failed in $file on line $line";
}

// 使用断言
assert(1 + 1 == 2, "The universe is broken");

九、PHP 异常处理

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

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

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

  • getCode() - 例外代码

  • getFile() - 源文件名

  • getLine() - 源代码行

  • gettrace() - n的backtrace()数组

  • getTraceAsString() - 格式化的跟踪字符串

十、PHP 过滤器

什么是 PHP 过滤器?

PHP 过滤器(Filter)是一组用于处理和验证数据的内置函数。过滤器可以帮助开发者确保用户输入的数据是有效的、安全的,并且符合预期的格式。PHP 提供了多种过滤器,可以用于过滤和验证数据类型、字符串、整数、浮点数、数组等。

函数和过滤器

如需过滤变量,请使用下面的过滤器函数之一:

  • filter_var() - 通过一个指定的过滤器来过滤单一的变量
  • filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
  • filter_input - 获取一个输入变量,并对它进行过滤
  • filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤

Validating 和 Sanitizing

Validating 过滤器:

  • 用于验证用户输入
  • 严格的格式规则(比如 URL 或 E-Mail 验证)
  • 如果成功则返回预期的类型,如果失败则返回 FALSE

Sanitizing 过滤器:

  • 用于允许或禁止字符串中指定的字符
  • 无数据格式规则
  • 始终返回字符串

十一、PHP JSON的

JSON 函数

函数 描述
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量
json_last_error 返回最后发生的错误

json_encode

PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

语法:

string json_encode ( value \[, options = 0 ] )

参数

  • value: 要编码的值。该函数只对 UTF-8 编码的数据有效。
  • 选项:由以下常量组成的二进制掩码 JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR。

要注意的是 JSON_UNESCAPED_UNICODE 选项,如果我们不希望中文被编码,可以添加该选项。

将 PHP 数组转换为 JSON 格式数据:

php 复制代码
<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);
?>

{"a":1,"b":2,"c":3,"d":4,"e":5}

json_decode

PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

语法:

mixed json_decode (json_string \[,assoc = false [, depth = 512 \[, options = 0 ]]])

参数:

  • json_string: 待解码的 JSON 字符串,必须是 UTF-8 编码数据

  • assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。

  • depth: 整数类型的参数,它指定递归深度

  • options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。

php 复制代码
<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>

object(stdClass)#1 (5) {

"a"\] =\> int(1) \["b"\] =\> int(2) \["c"\] =\> int(3) \["d"\] =\> int(4) \["e"\] =\> int(5) } array(5) { \["a"\] =\> int(1) \["b"\] =\> int(2) \["c"\] =\> int(3) \["d"\] =\> int(4) \["e"\] =\> int(5) } ❤️**结语:** **本次精彩内容已圆满结束!希望各位读者在阅读过程中能够收获满满。在此,特别感谢各位读者的支持与三连赞。如果文章中存在任何问题或不足之处,欢迎在评论区留言,蜗牛必定会认真对待并加以改进,以便为大家呈现更优质的文章。你们的支持与鼓励,将是博主不断前进的最大动力。再次感谢大家的陪伴与支持!**

相关推荐
机器视觉知识推荐、就业指导6 分钟前
Qt联合Halcon开发一:Qt配置Halcon环境【详细图解流程】
开发语言·qt·halcon
子恒200510 分钟前
警惕GO的重复初始化
开发语言·后端·云原生·golang
daiyunchao11 分钟前
如何理解"LLM并不理解用户的需求,只是下一个Token的预测,但他能很好的完成任务,比如写对你想要的代码"
后端·ai编程
leluckys17 分钟前
swift-协程
开发语言·ios·swift
white.tie23 分钟前
一个手机请求头的随机库
开发语言·javascript·python
Mikhail_G25 分钟前
Python初学者入门指南
大数据·运维·开发语言·python·数据分析
Android洋芋30 分钟前
SettingsActivity.kt深度解析
后端
测试界清流37 分钟前
如何使用postman
开发语言·lua
onejason1 小时前
如何利用 PHP 爬虫按关键字搜索 Amazon 商品
前端·后端·php
小志开发1 小时前
鼎捷T100开发语言-Genero FGL 终极技术手册
开发语言·erp·4gl·t100·genero fgl·鼎捷