PHP基础语法(上)

这篇具有很好参考价值的文章主要介绍了PHP基础语法(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it

目录

前言

一、基础语法

1.1 标记

1.2 输出语句

1.2.1 echo

1.2.2 print

1.3 注释

1.3.1 单行注释

1.3.2 多行注释

1.4 标识符

1.5 关键字

二、数据与运算

2.1  常量

2.1.1 常量的定义和使用

2.1.2 预定义常量

2.2 变量

2.2.1 变量的赋值

2.2.2 超全局变量

2.3 数据类型

2.3.1 标量数据类型

2.3.2 特殊数据类型

2.3.3 数据类型检测

2.3.4 数据类型转换

2.4 运算符及优先级

2.4.1 运算符

2.4.2 优先级

总结


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it

前言

本篇文章通过介绍PHP的基础语法,数据与运算,来让你了解PHP的魅力。

 这是本篇文章的脉络图:

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it


一、基础语法

1.1 标记

标记 :由于PHP 是嵌入式脚本语言,它在实际开发中经常会与HTML内容混编在一起,
所以为了区分HTML与PHP代码,需要使用标记对PHP代码进行标识。

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it

注意 :当解析一个文件时, PHP 会寻找起始和结束标记,也就是告诉PHP 开始和停止解析二者之间的代码。此种解析方式使得PHP可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被PHP 解析器忽略。

1.2 输出语句

1.2.1 echo

echo可将紧跟其后的一个或多个字符串、 表达式、变量和常量 的值输出到页面中,多个数据之间使用逗号“,”分隔。

1.2.2 print

print与echo的用法相同,唯一的区别是print只能输出一个值。
print_r() :PHP的内置函数,它可输出任意类型的数据,如字符串、数组等。
var_dump() :不仅可以打印一个或多个任意类型的数据,还可以获取数据的类型和元素个数。

例如:

<?php
var_dump("php","2");
?>

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it

1.3 注释

注释 :在PHP开发中,为了便于对代码的阅读和维护,可以使用注释来进行解释和说明。它在程序解析时会被PHP解析器忽略。

1.3.1 单行注释

使用双斜线(//)来注释单行代码。注释符号后面的内容将被视为注释,不会被解释器执行。
例如:

<?php 
// 这是一个单行注释示例 
$variable = "Hello World";
?>

1.3.2 多行注释

使用斜线加星号(/*... */)来注释多行代码。注释符号之间的内容将被视为注释,不会被解释器执行。
例如:

<?php
/* 这是一个多行 
注释示例 */ 
$variable2 = "Hello World";
?>

1.4 标识符

标识符:PHP程序开发中,经常需要自定义一些符号来标记一些名称,如变量名、函数名、类名等,这些符号被称为标识符。
标识符的定义需要遵循一定的规则,具体如下:
1. 标识符只能由字母、数字、下划线组成,且不能包含空格
2.标识符只能以字母或下划线开头的任意长度的字符组成
3.标识符用做变量名时,区分大小写 $a,$A
4.如果标识符由多个单词组成,那么应使用下划线进行分隔(例如:user_name)
例如:
合法标识符: itcast、itcast88、_itcast、username、password等。
非法标识符:66itcast、it cast、123、@itcast等。

1.5 关键字

关键字:是编程语言里事先定义好并赋予特殊含义的单词,也称作保留字。和其他语言一样,PHP中保留了许多关键字,下面是PHP的一些主要关键字:

1. echo:用于在屏幕上输出文本或变量的值。
2. if、else、elseif:用于条件语句,根据指定条件执行不同的代码块。
3. for、while、do-while:用于循环结构,重复执行一段代码块。
4. switch、case:用于多重条件判断,根据不同情况执行不同的代码块。
5. break:用于退出循环或switch语句。
6. continue:用于跳过当前循环的剩余代码,继续下一轮循环。
7. function:用于定义和声明一个函数。
8. class、interface、trait、extends、implements:用于面向对象编程,定义类、接口和特性,实现类之间的继承和接口的实现。
9. public、protected、private:用于定义类的成员属性或方法的访问级别。
10. static:用于定义静态属性和方法,可以在不创建类的实例的情况下访问。
11. final:用于防止类被继承或方法被覆盖。
12. abstract:用于声明抽象类或方法,不能直接实例化。
13. namespace:用于声明命名空间,避免类名冲突。
14. use:用于导入其他命名空间的类或函数。

二、数据与运算

2.1  常量

概念:常量就是在脚本运行过程中值始终不变的量。
特点:是一旦被定义就不能被修改或重新定义。
举例:数学中的圆周率π就是一个常量,其值就是固定且不能被改变的。
命名规则:遵循标识符的命名规则, 默认大小写敏感,习惯上常量名称总是使用大写字母表示。

2.1.1 常量的定义和使用

在PHP中,可以使用`define()`函数来定义常量。常量是无法被改变的值,在定义后不能再次进行修改。常量的定义方式有两种:

1. 使用 `define()` 函数定义常量:

define ('PAI', '3.14'); 
echo 'PI =', PAI; / / Output result: PI =3.14 
define ('R', '5', true); 
echo 'radius =', R; / / Output result: Radius =5 
echo 'radius =', r; / / Output result: Radius =5
首个参数定义常量的名称,第二个参数定义常量的值,可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。 如果设置为 TRUE ,该常量则大小写不敏感。默认是大小写敏感的。常量定义后,可以在任何地方使用,不需要加`$`符号,直接使用常量名称即可。

2. 使用`const`关键字定义常量(PHP 5.3+):

const R = 6;
const P = 2 * R;
echo 'P=', P; // 输出结果:P=12

无论使用哪种方式定义常量,都无法在定义后再次修改常量的值。另外,常量的作用域是全局的,可以在任何地方访问,包括函数内部。

2.1.2 预定义常量

PHP中有许多预定义常量,它们是由PHP提供的全局常量。这些常量可以在任何地方直接使用,无需进行定义或声明。以下是一些常用的预定义常量及其解释:

  1. __FILE__:当前执行的文件的完整路径和文件名。
  2. __DIR__:当前执行的文件所在的目录的绝对路径。
  3. __LINE__:当前代码行号。
  4. __FUNCTION__:当前所在函数的函数名。
  5. __CLASS__:当前所在类的类名。
  6. __METHOD__:当前所在方法的方法名。
  7. __NAMESPACE__:当前所在命名空间的命名空间名。
  8. PHP_VERSION:当前PHP版本号。
  9. PHP_OS:运行PHP的操作系统。
  10. PHP_EOL:当前操作系统的换行符。

这些预定义常量可以帮助我们获取有关代码和环境信息,方便进行调试和编程。可以通过直接在代码中使用它们来获取相应的值。示例:

echo __FILE__; // 输出当前文件的完整路径和文件名
echo __DIR__; // 输出当前文件所在的目录的绝对路径
echo __LINE__; // 输出当前代码行号

function myFunction() {
    echo __FUNCTION__; // 输出当前所在函数的函数名
    echo __CLASS__; // 输出当前所在类的类名
    echo __METHOD__; // 输出当前所在方法的方法名
}

echo PHP_VERSION; // 输出当前PHP版本号
echo PHP_OS; // 输出运行PHP的操作系统

2.2 变量

概念:变量是用于存储信息的"容器":
组成:在PHP中,变量是由$符号和变量名组成的。
规则:变量名的命名规则与标识符相同。
举例:如$number、$_it为合法的变量名,而$123、$*math为非法变量名。

2.2.1 变量的赋值

在PHP中,变量赋值是将一个值保存到变量中的过程。PHP是一种动态类型的语言,因此在赋值时无需事先声明变量的数据类型。以下是关于PHP变量赋值的三种方式:

1. 传值赋值:

$variable_name = value;

这是最常见的赋值语法,通过=操作符将一个值赋给变量。$variable_name是变量名,value是要赋给变量的值。

示例:

$name = "John"; // 将字符串 "John" 赋给变量 $name
$age = 25; // 将数字 25 赋给变量 $age
$is_active = true; // 将布尔值 true 赋给变量 $is_active

2. 引用赋值:
在PHP中,通过引用赋值可以使用多个变量引用同一个值。

$variable_name = &$reference_variable;

`&$reference_variable`表示一个引用变量,它与其他变量共享相同的内存空间,即对其中一个变量的修改会影响其他引用变量。

示例:

$a = 10;
$b = &$a; // 将 $a 的引用赋给 $b
$b = 20; // 修改 $b 的值也会影响 $a
echo $a; // 输出 20
两种实现方式的区别:传值赋值方式当一个变量值发生改变时,不影响另一个变量;而引用赋值的方式,另一个变量会随之变化。

2.2.2 超全局变量

在PHP中,超全局变量(superglobal variables)是一类预定义的全局变量,它们在脚本的任何地方都可以直接访问,无需额外的声明或引用。这些超全局变量在整个脚本中都是可用的,无论是在函数、类、循环还是条件语句中。

以下是PHP中最常用的超全局变量:

1. `$_GET`:用于获取通过 URL 查询字符串传递的参数。它是一个关联数组,其中的键是参数名,值是参数的值。

示例:

// URL: example.com?name=John&age=25
echo $_GET['name']; // 输出 "John"
echo $_GET['age']; // 输出 "25"

2. `$_POST`:用于获取通过 HTTP POST 方法提交的表单数据。它也是一个关联数组,其中的键是表单字段名,值是字段的值。

示例:

// 表单中的字段:<input type="text" name="name"> 和 <input type="text" name="age">
echo $_POST['name']; // 输出提交的 name 字段的值
echo $_POST['age']; // 输出提交的 age 字段的值

3. `$_REQUEST`:用于获取通过 HTTP GET 或 POST 方法提交的参数和表单数据。它是`$_GET`和`$_POST`的合并。

4. `$_COOKIE`:用于获取客户端提交的 Cookie 值。它是一个关联数组,其中的键是 Cookie 名称,值是 Cookie 的值。

示例:

echo $_COOKIE['username']; // 输出名为 username 的 Cookie 值

5. `$_SESSION`:用于访问当前会话的 session 数据。它是一个关联数组,用于在不同页面之间存储和读取会话信息。

示例:

session_start();
$_SESSION['username'] = 'John'; // 设置 session 变量
echo $_SESSION['username']; // 输出 'John'

6. `$_SERVER`:包含了有关服务器和执行环境的信息,例如请求的方法、请求的 URL、服务器的主机名等。它是一个关联数组。

示例:

echo $_SERVER['REQUEST_METHOD']; // 输出请求的方法(GET、POST、PUT等)
echo $_SERVER['SERVER_NAME']; // 输出服务器的主机名

2.3 数据类型

PHP中支持3类数据类型:
1.标量数据类型
2.复合数据类型
3.特殊数据类型

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it

2.3.1 标量数据类型

1.布尔型

布尔型是PHP中较常用的数据类型之一,通常用于逻辑判断。 表示事物的“真”和“假”,并且不区分大小写。

示例:
$isTrue = true;
$isFalse = false;

2.整型

整型可以由十进制、八进制和十六进制数指定,用来表示整数。
(1) 在它前面加上“-”符号,可以表示负数。
(2)八进制数使用0~7表示,前缀为0。
(3) 十六进制数使用0~9与A~F表示,以0x为前缀。
3.浮点型
概念 :浮点数是程序中表示小数的一种方法,或是指数形式。
表示方式 :通常使用标准格式和科学计数法格式表示。
4.字符串型
概念:字符串是由连续的字母、数字或字符组成的字符序列。
表示方式:分别为单引号、双引号、heredoc语法结构和nowdoc 语法结构。
示例:
<?php
$number = 100;
echo 'number=',$number;
echo '<br>';
echo "$number=",$number;
?>

注意:单引号输出字符串,双引号里面可以解析变量。

上述例子运行结果如下:

PHP基础语法(上),PHP,php,开发语言,后端,青少年编程,笔记,学习方法,改行学it

2.3.2 特殊数据类型

1.NULL
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。 NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。 可以通过设置变量值为 NULL 来清空变量数据:
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
在下列情况下一个变量被认为是NULL:
(1)被赋值为NULL。
(2)尚未被赋值。
(3)被unset()。

2.3.3 数据类型检测

PHP中变量的 数据类型通常不是开发人员设定的,而是根据该 变量使用的 上下文在运行时决定的。
PHP中提供了许多检测数据类型的函数,大致可以分为两种:gettype()函数和is_*()类函数,括号里的参数为待要检测的值。
is_*()如果检测的值符合检测的数据类型,则返回true,否则返回false。

2.3.4 数据类型转换

时机 :在PHP中,对两个变量进行操作时,若其数据类型不相同,则需要对其进行数据类型转换。
分类 :通常情况下,数据类型转换分为自动类型转换和强制类型转换。

1.自动类型转换

指的是当运算需要或与期望的结果类型不匹配时,PHP将自动进行类型转换,无需开发人员做任何操作。

分类:最常见的有3种,分别为转换成布尔型、转换成整型和转换成字符串型。

2.强制类型转换

所谓强制类型转换,就是在编写程序时手动转换数据类型,在要转换的数据或变量之前加上“(目标类型)”即可。
例如:
var_dump((int) "6.66");

2.4 运算符及优先级

2.4.1 运算符

运算符 ,专门用于告诉程序执行特定运算或逻辑操作的符号。PHP提供了一系列的运算符,用于执行不同的数学、逻辑和字符串操作。以下是PHP中常见的运算符及其作用:
  1. 算术运算符:

    • + 加法:对两个数进行相加。
    • - 减法:从一个数中减去另一个数。
    • * 乘法:将两个数相乘。
    • / 除法:将一个数除以另一个数。
    • % 取模:取得两个数相除后的余数。
  2. 赋值运算符:

    • = 赋值:将右侧的值赋给左侧的变量。
    • += 加法赋值:将右侧的值加到左侧的变量上。
    • -= 减法赋值:从左侧的变量中减去右侧的值。
    • *= 乘法赋值:将左侧的变量乘以右侧的值并重新赋值给左侧的变量。
    • /= 除法赋值:将左侧的变量除以右侧的值并重新赋值给左侧的变量。
  3. 比较运算符:

    • == 等于:检查两个值是否相等。
    • != 不等于:检查两个值是否不相等。
    • > 大于:检查左侧的值是否大于右侧的值。
    • < 小于:检查左侧的值是否小于右侧的值。
    • >= 大于等于:检查左侧的值是否大于或等于右侧的值。
    • <= 小于等于:检查左侧的值是否小于或等于右侧的值。
  4. 逻辑运算符:

    • && 逻辑与:检查两个条件是否同时为真。
    • || 逻辑或:检查两个条件是否至少有一个为真。
    • ! 逻辑非:对条件进行取反。
  5. 字符串运算符:

    • . 连接:连接两个字符串。
    • .= 连接赋值:将右侧的字符串连接到左侧的字符串上并重新赋值给左侧的字符串。
  6. 自增/自减运算符:

    • ++ 自增:将变量的值加1。
    • -- 自减:将变量的值减1。
  7. 数组运算符:

    • + 合并:将两个数组合并为一个新数组。
    • == 相等:检查两个数组是否相等。
    • === 全等:检查两个数组的键和值是否完全相同。

2.4.2 优先级

运算符的优先级决定了它们在表达式中的结合性和执行顺序。如果有多个运算符同时出现,优先级高的运算符会先于优先级低的运算符进行计算。可以使用括号 () 来改变运算符的优先级和强制先执行某些部分。

例如:先乘除,后加减。
补充:圆括号()优先级别最高。例如, 5 + 6 * 7的输出结果为47,(5 + 6) * 7的输出结果为77。

以下是运算符的优先级(从高到低):

  1. 一元运算符:
    一元运算符包括前置递增/递减运算符 ++$x--$x 和取反、正数运算符 -$x+$x。它们具有最高的优先级,会先于其他运算符进行计算。

  2. 乘性运算符:
    乘性运算符包括乘法 *、除法 / 和取模 %,以及字符串连接运算符 .。它们的优先级高于加性运算符,但低于一元运算符。乘性运算符按照从左到右的顺序进行计算。

  3. 加性运算符:
    加性运算符包括加法 + 和减法 -,以及字符串连接运算符 .。它们的优先级低于乘性运算符,但高于位移运算符。加性运算符按照从左到右的顺序进行计算。

  4. 位移运算符:
    位移运算符包括左移 << 和右移 >>。它们的优先级低于加性运算符,但高于比较运算符。

  5. 比较运算符:
    比较运算符包括小于 <、小于等于 <=、大于 >、大于等于 >=,以及等于 ==、不等于 !=、全等 ===、不全等 !==。比较运算符的优先级低于位移运算符,但高于位运算符和逻辑运算符。

  6. 位运算符:
    位运算符包括按位与 &、按位异或 ^、按位或 |。它们的优先级低于比较运算符,但高于逻辑运算符。

  7. 逻辑运算符:
    逻辑运算符包括逻辑与 &&、逻辑或 ||,以及逻辑异或 ^ 和逻辑非 !。逻辑运算符的优先级低于位运算符,但高于条件运算符。

  8. 三元条件运算符:
    三元条件运算符 expr1 ? expr2 : expr3 用于根据条件选择表达式的值。它的优先级低于逻辑运算符,但高于赋值运算符。

  9. 赋值运算符:
    赋值运算符用于给变量赋值,如 =+=-=*=/=%=.= 等。赋值运算符具有最低的优先级。


总结

PHP在当今世界仍然是一门流行和重要的服务器端脚本语言。它具有广泛的应用领域、强大的生态系统和不断发展的特点,为Web开发提供了可靠和灵活的解决方案。随着技术的进步和改进,PHP有望继续保持其在Web开发领域的重要地位。文章来源地址https://www.toymoban.com/news/detail-713057.html

到了这里,关于PHP基础语法(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年03月青少年软件编程C语言二级真题答案——持续更新.....

    请编写一个程序实现以下功能:从一个字符串中,提取出所有的数字字符即0-9,并作为数求和。 时间限制:1000 内存限制:65536 输入 一行字符串,长度不超过100,字符串中不含空格。 输出 字符串中所有数字字符作为数的和 样例输入 Lsd2f02k3ja3sdf223 样例输出 17

    2023年04月13日
    浏览(82)
  • web安全php基础_php语法格式与注释

    php脚本以php 开始 以 ?结束 但是先前创建页面的时候我们发现phpinfo只有php开头,并没有?结尾 在这里我们可以手动给它加上?结尾 PHP指令分隔符   与C、Perl及Java一样,PHP 需要在每个语句后用分号结束指令。在编写 PHP 代码的时候,我们需要在每一行代码指令后面添加一个分

    2024年02月12日
    浏览(44)
  • PHP基础语法(上)

    目录 前言 一、基础语法 1.1 标记 1.2 输出语句 1.2.1 echo 1.2.2 print 1.3 注释 1.3.1 单行注释 1.3.2 多行注释 1.4 标识符 1.5  二、数据与运算 2.1  常量 2.1.1 常量的定义和使用 2.1.2 预定义常量 2.2 变量 2.2.1 变量的赋值 2.2.2 超全局变量 2.3 数据类型 2.3.1 标量数据类型 2.

    2024年02月08日
    浏览(41)
  • 从零开始的PHP开发逆天路——语法

    PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。 PHP 脚本可以放在文档中的任何位置。 PHP 脚本以 ?php 开始,以 ? 结束: ?php // PHP 代码 ? PHP 文件的默认文件扩展名是 .php。 PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。 向浏览器输出文本 \\\"Hello World!\\\": !DOCTYPE htm

    2024年04月17日
    浏览(41)
  • PHP语言基础

    🌱博客主页:大寄一场. 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录 前言 一、变量和数据类型 二、运算符和表达式 三、条件语句 四、循环语句 PHP是一种非常流行的开源服务器端脚本语言,广泛用于Web开发。它可以与HTML、CSS和JavaScript配合使用,以动态生成内容。

    2024年02月02日
    浏览(48)
  • 【后端开发】01-Java基础语法

    Java基础语法 目录 1. 概述 1.1. 语言特性 1.2. 开发平台 1.3. 开发环境 1.4. 开发步骤 1.5. 注释 2. 变量与运算符 2.1. /保留字 2.2. 标识符 2.3. 变量 2.4. 常用数据类型 2.4.1. 基本数据类型(8种) 2.4.2. 引用数据类型 2.4.3. 数据类型转换 2.5. 运算符 2.5.1. 算术运算符(7个) 2.5.2. 关

    2024年02月08日
    浏览(36)
  • PHP入门介绍及语言基础

    🌱博客主页:大寄一场. 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录 前言 一、变量和数据类型 二、运算符和表达式 三、条件语句 四、循环语句 PHP是一种非常流行的开源服务器端脚本语言,广泛用于Web开发。它可以与HTML、CSS和JavaScript配合使用,以动态生成内容。

    2024年02月05日
    浏览(43)
  • web基础入门和php语言基础入门 二

    WHERE 子句,条件限制语句: SELECT *或其他 FROM 数据表(可以是多个) WHERE 需要满足的条件 SELECT NAME FROM VULN WHERE NAME=\\\"ecoloy\\\"; SELECT * FROM VULN WHERE NAME=\\\"ecoloy\\\"; 首先,我先插入了几条数据。 然后我进行了限制查询,从 vuln 数据表中的 name 字段下筛选出来 NAME=\\\"ecoloy\\\" 数据。 第二句话是

    2024年02月13日
    浏览(55)
  • 青少年CTF平台练习密码学

    题目 凯撒大帝在出征之路上留下了这样一串字符,你能通过这串字符得到FLAG并提交吗? 我的解答: 凯撒密码 qsnctf{1c2fee7b8fcdaf7d1e2320acd6a97a9f} 题目 这是什么密码呢?得到的结果请加上qsnctf{}后提交。 我的解答: 猪圈密码:http://moersima.00cha.net/zhuquan.asp 在线解码即可。 题目

    2024年03月09日
    浏览(57)
  • [青少年CTF]-MISC WP(二)

    16)17insanity FLAG:INSA{Youre_crazy_I_like_it} 17)17sanity FLAG:INSA{Youre_sane_Good_for_you} 18)原sher FLAG:qsnctf{c1f5e391-83dd-47e3-9f15-0e32eaafdc95} 19)签到 20)八卦迷宫 FlAG:cazy{zhanchangyangchangzhanyanghechangshanshananzhanyiyizhanyianyichanganyang} 21)我看他是喜欢套娃! 摩斯电码在线转换 培根密码在线加解

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包