PHP高级教程

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

📚专栏分类:PHP

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

目录

一、PHP 多维数组 

二、PHP date() 函数 

PHP Date() - 格式化日期

三、PHP 包含文件 

PHP include 和 require 语句

四、PHP 文件处理

打开文件

关闭文件

检测文件末尾(EOF) 

逐行读取文件

逐字符读取文件

五、PHP Cookie

Cookie 是什么?

如何创建 Cookie?

如何取回 Cookie 的值? 

六、PHP Session

七、PHP 发送电子邮件

八、PHP 错误处理

九、PHP 异常处理

十、PHP 过滤器

什么是 PHP 过滤器?

函数和过滤器

Validating 和 Sanitizing 

十一、PHP JSON的

JSON 函数

json_encode

json_decode 


一、PHP 多维数组 

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

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

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

二维数组语法格式:

array (
    array (elements...),
    array (elements...),
    ...
)

<?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
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
$color='red';
$car='BMW';
?>

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

<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
$file = fopen("test.txt","r");

//执行一些代码

fclose($file);
?>

检测文件末尾(EOF) 

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

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

逐行读取文件

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

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

逐字符读取文件

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

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

五、PHP Cookie

Cookie 是什么?

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

如何创建 Cookie?

setcookie() 函数用于设置 cookie。

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

语法:

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

如何取回 Cookie 的值? 

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

六、PHP Session

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

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

  • 启动会话:在脚本开始时,使用 session_start() 函数启动会话。这将启动一个新的会话或者重用现有会话(如果已经存在)。
session_start();
  • 设置 Session 变量:使用 $_SESSION 超全局数组来设置和获取 Session 变量。将数据存储在 $_SESSION 数组中,服务器会在用户的每次请求之间保留这些数据。
$_SESSION['username'] = 'JohnDoe';
$_SESSION['logged_in'] = true;
  •  获取 Session 变量:在其他页面中,可以通过 $_SESSION 数组访问已设置的 Session 变量。
echo 'Welcome, ' . $_SESSION['username'] . '!';
  • 销毁 Session 变量:当用户登出或会话结束时,可以使用 session_destroy() 函数销毁会话数据。
session_destroy();
  •  删除某个 Session 变量:要删除某个特定的 Session 变量,可以使用 unset() 函数
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_reporting 和 display_errors 配置选项来控制错误报告的级别和显示方式。
// 设置错误报告级别
error_reporting(E_ALL); // 报告所有错误

// 设置是否在页面上显示错误
ini_set('display_errors', 1); // 在页面上显示错误
  • 异常处理:PHP 提供了异常处理机制,允许开发者在代码中抛出和捕获异常。使用 trycatch 和 throw 语句来处理异常。
try {
    // 可能抛出异常的代码
    throw new Exception("An error occurred");
} catch (Exception $e) {
    // 处理异常的代码
    echo "Caught exception: " . $e->getMessage();
}
  • 自定义错误处理函数:PHP 允许开发者定义自己的错误处理函数,该函数会在发生错误时被调用。使用 set_error_handler() 函数来设置自定义错误处理函数。
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() 函数来使用断言。
// 设置断言处理函数
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
   $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
   $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)
}
 

❤️结语: 

本次精彩内容已圆满结束!希望各位读者在阅读过程中能够收获满满。在此,特别感谢各位读者的支持与三连赞。如果文章中存在任何问题或不足之处,欢迎在评论区留言,蜗牛必定会认真对待并加以改进,以便为大家呈现更优质的文章。你们的支持与鼓励,将是博主不断前进的最大动力。再次感谢大家的陪伴与支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/614137.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程间通信(一)

IPC 在之前我们也有涉及到进程间通信的知识点&#xff0c;比如fork或exec或父进程读取子进程的退出码等&#xff0c;但是这种通信方式很有限&#xff0c;今天来学习进程间通信的其他技术——IPC&#xff08;InterProcess Communication&#xff09;。 IPC的方式通常有管道&…

【比邻智选】MF871U模组

&#x1f680;搭载国产芯&#xff0c;严苛测试&#xff0c;稳定可靠 &#x1f6e0;️R16特性加持&#xff0c;5G LAN&#xff0c;纳秒级精度 &#x1f310;超低成本&#xff0c;丰富协议&#xff0c;连接无界限

linux安装配置Docker保姆级教程

Docker到底是什么? Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱机制&#xff0c;相互之间…

[AutoSar]lauterbach_001_ORTI_CPUload_Trace

目录 关键词平台说明一、ORTI概述二、ORTI文件的生成三、ORTI文件的导入四、Trace 功能4.1 Trace 功能菜单介绍4.2 Trace功能的配置4.3 Trace MCDS 设置4.4 Task Switches断点的设置4.5 Trace 数据的录取4.6 CPU 负载和Task调度的查看 关键词 嵌入式、C语言、autosar、OS、BSW…

智慧公厕建设,打造智慧城市基础设施新亮点

公共厕所是城市基础设施的重要组成部分&#xff0c;而智慧公厕的建设则是现代城市管理的创新之举。为了实现公厕的精细化管理和提供更便捷的服务&#xff0c;推进智慧公厕建设必须要实现技术融合、业务融合、数据融合的目标&#xff0c;跨越层级、地域、系统、部门和业务的限制…

LabVIEW的MEMS电容式压力传感器测试系统

LabVIEW的MEMS电容式压力传感器测试系统 针对传统微惯性测量单元(MIMU)标定方法存在的过程繁琐、标定周期长及设备复杂等问题&#xff0c;提出了一种基于LabVIEW软件的MIMU误差参数快速标定方法。通过软件上位机控制小型三轴转台&#xff0c;配合卡尔曼滤波器技术&#xff0c;…

Linux进程间通信 pipe 实现线程池 命名管道 实现打印日志 共享内存代码验证 消息队列 信号量

文章目录 前言管道匿名管道 pipe测试管道接口 --> 代码验证管道的4种情况管道的5种特征 线程池案例代码实现&#xff1a;ProcessPool.ccTask.hpp检测脚本makefile 命名管道代码演示&#xff1a;makefilenamedPipe.hppserver.ccclient.cc 实现日志Log.hpp 共享内存共享内存原…

机器人系统仿真

0、何为仿真 通过计算机对实体机器人系统进行模拟的技术。 1、为何仿真 低成本&#xff1a; 机器人实体一般价格昂贵&#xff0c;为降低机器人学习、调试的成本&#xff1b;高效&#xff1a; 搭建的环境更为多样且灵活&#xff0c;可以提高测试效率以及测试覆盖率&#xff1b…

1.基于python的单细胞数据预处理-降维可视化

目录 降维的背景PCAt-sneUMAP检查质量控制中的指标 参考&#xff1a; [1] https://github.com/Starlitnightly/single_cell_tutorial [2] https://github.com/theislab/single-cell-best-practices 降维的背景 虽然特征选择已经减少了维数&#xff0c;但为了可视化&#xff0…

pikachu靶场-全套学习

文章目录 配置pikachu靶场浏览器访问过程burpsuite配置代理hackbar安装使用kali安装中国蚁剑暴力破解cookie简化场景解释各部分含义如何工作 基于表单的暴力破解验证码绕过(On server)验证码绕过(on client)token防爆破? XSS&#xff08;Cross-Site Scripting跨站脚本攻击 &am…

牛客NC142 最长重复子串【中等 字符串 Java/Go/C++】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc 思路 注意&#xff1a;题目给的时间复杂度是O(N^2)那么直接套用双重循环&#xff1a;外层循环i为假定起始重复子串的初始位置&#xff0c;内层循环的j为假定重复子串的结束位置…

【LeetCode算法】28. 找出字符串中第一个匹配项的下标

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案四、JAVA截取字符串的常用方法4.1 通过subString()截取字符串* 一、题目 给你两个字符串 haystack 和 needle &#xff0c;请你在…

ubuntu安装oceanbase调通本地navicat链接

分为两部分 一安装oceanbase服务 准备工作 mkdir -p /data/1 /data/log1 chown -R admin.admin /data/1 /data/log1/偷偷说&#xff1a;其实这步我忘记执行&#xff0c;也没影响我安装 oceanbase程序是很占内存的在安装时我们要先下载好安装包&#xff1a; 然后放在能记住的…

react引入阿里矢量库图标

react引入阿里矢量库图标 登录阿里矢量库&#xff0c;将项目所需的图标放一起 react项目中新建文件夹MyIcon.js 3. 在页面中引入&#xff0c;其中type为图标名称

机器人系统ros2-开发实践08-了解如何使用 tf2 来访问坐标帧转换(Python)

tf2 库允许你在 ROS 节点中查询两个帧之间的转换。这个查询可以是阻塞的&#xff0c;也可以是非阻塞的&#xff0c;取决于你的需求。下面是一个基本的 Python 示例&#xff0c;展示如何在 ROS 节点中使用 tf2 查询帧转换。 本教程假设您已完成tf2 静态广播器教程 (Python)和tf…

探索循环购模式:消费返利与积分机制的创新融合

大家好&#xff0c;我是吴军&#xff0c;今天非常荣幸能与大家分享一种别具一格的商业模式——循环购模式。这种商业模式在近年来逐渐崭露头角&#xff0c;受到了广大消费者的热烈追捧。或许您之前听说过消费满额即送现金的活动&#xff0c;但循环购模式不仅仅局限于此&#xf…

单细胞分析:多模态 reference mapping (2)

引言 本文[1]介绍了如何在Seurat软件中将查询数据集与经过注释的参考数据集进行匹配。我们展示了如何将来自不同个体的人类骨髓细胞&#xff08;Human BMNC&#xff09;的人类细胞图谱&#xff08;Human Cell Atlas&#xff09;数据集&#xff0c;有序地映射到一个统一的参考框…

数据库数据恢复—Sql Server数据库文件丢失丢失怎么恢复数据?

数据库数据恢复环境&#xff1a; 5块硬盘组建一组RAID5阵列&#xff0c;划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库&#xff0c;存储空间在操作系统层面划分了三个逻辑分区。 数据库故障&#xff1a; 数据库文件丢失&#xff0c;主要涉及3个…

【微信开发】微信支付前期准备工作(申请及配置)

1、申请并配置公众号或微信小程序 1.1 账户申请 通过微信公众平台&#xff0c;根据指引申请微信小程序或公众号&#xff0c;申请时需要微信认证&#xff0c;申请流程不在赘述 1.2 信息配置 申请通过后&#xff0c;需进入小程序和公众号内进行信息配置 1.2.1 小程序信息配置…

如何批量将十六进制数据转成bin文件

最近在做新项目遇到一个问题&#xff0c;我们要通过上位机把一堆数据通过串口发送给下位机存储&#xff0c;而上位机需要Bin文件。 解决办法&#xff1a; 1)创建一个记事本文件&#xff0c;然后将其后缀修改成.bin 2)然后打开notepad,新建一个文件&#xff0c;随便写下数据 我…