0%

PHP8 基础语法入门:从环境搭建到核心概念

PHP8 基础语法入门:从环境搭建到核心概念

PHP 是一门广泛用于 Web 开发的服务器端脚本语言,PHP8 作为主流版本,带来了性能提升、语法简化和新特性支持(如 JIT 编译器、联合类型、match 表达式等)。本文将从环境搭建开始,逐步讲解 PHP8 的基础语法、核心概念和实战示例,帮助零基础开发者快速入门。

环境搭建:让 PHP 跑起来

要运行 PHP 代码,需先搭建 PHP 运行环境。推荐两种方案,根据需求选择:

本地环境(新手推荐:XAMPP/WAMP)

XAMPP(跨平台:Windows/macOS/Linux)和 WAMP(仅 Windows)是集成环境,包含 PHP、Apache(Web 服务器)、MySQL(数据库),一键安装即可使用:

  • 下载地址:
  • 安装步骤:
    1. 下载对应系统的安装包,双击运行;
    2. 安装时默认勾选「Apache」「PHP」「MySQL」(新手无需修改);
    3. 安装完成后,启动 XAMPP/WAMP(启动成功后,图标为绿色)。
  • 验证环境:
    1. 打开浏览器,访问 http://localhosthttp://127.0.0.1
    2. 若看到 XAMPP/WAMP 的默认页面,说明环境搭建成功;
    3. 查看 PHP 版本:访问 http://localhost/phpinfo.php(XAMPP 已默认提供此文件),页面会显示 PHP 版本(需为 8.x)。

单个 PHP 文件运行(无需 Web 服务器)

若仅需测试简单 PHP 代码,可直接通过 PHP 命令行(CLI) 运行,无需启动 Apache:

  1. 确保已安装 PHP(XAMPP 中 PHP 路径通常为 XAMPP/php,需将其添加到系统环境变量);
  2. 打开终端 / 命令提示符,输入 php -v,若显示 PHP 8.x 版本,说明 CLI 可用;
  3. 创建一个 .php 文件(如 test.php),写入代码后,在终端执行 php test.php,即可看到输出结果。

PHP 基础语法:Hello World 与代码结构

第一个 PHP 程序:Hello World

PHP 代码需包裹在 <?php ... ?> 标签中(这是 PHP 的标识,告诉服务器这部分是 PHP 代码)。创建 hello.php 文件,写入以下代码:

1
2
3
4
5
6
7
8
<?php
// 这是单行注释(PHP 代码的注释方式)
/* 这是
多行注释 */

// 输出 "Hello World"(echo 是 PHP 内置的输出语句)
echo "Hello World!";
?>

运行方式:

  • Web 方式:将 hello.php 放入 XAMPP 的 htdocs 目录(路径:XAMPP/htdocs),浏览器访问 http://localhost/hello.php,页面显示 Hello World!
  • CLI 方式:终端进入 hello.php 所在目录,执行 php hello.php,终端输出 Hello World!

PHP 代码的核心规则

(1)PHP 标签

PHP 代码必须用标签包裹,常用标签有两种:

  • 标准标签(推荐):<?php ... ?>(所有环境都支持,无兼容性问题);
  • 短标签(需配置开启):<? ... ?>(不推荐,部分服务器可能禁用)。

注意:若 PHP 文件仅包含 PHP 代码(无 HTML),建议在文件末尾省略 ?>,避免意外输出空格导致 header 错误。

(2)语句结束符:分号 ;

PHP 中每个语句必须以 分号 ; 结束,否则会报错。例如:

1
2
3
4
<?php
echo "Hello"; // 正确:有分号
echo "World" // 错误:缺少分号,会导致语法错误(如果是最后一句可以不加分号)
?>
(3)注释

注释是代码的说明,不会被执行,PHP 支持三种注释方式:

  • 单行注释:// 注释内容# 注释内容(推荐用 //);
  • 多行注释:/* 注释内容 */(不能嵌套)。
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// 单行注释:输出用户名
echo "Username: Alice";

# 另一种单行注释:输出年龄
echo "Age: 25";

/* 多行注释:
这是一段测试代码
用于演示注释用法 */
echo "Test";
?>
(4)大小写敏感

PHP 对关键字、函数名、类名不敏感,但对变量名敏感

1
2
3
4
5
6
7
8
9
10
11
12
<?php
// 关键字/函数名不敏感:echo、ECHO、EcHo 效果相同
echo "Hello ";
ECHO "PHP ";
EcHo "8\n";

// 变量名敏感:$name 和 $Name 是两个不同变量
$name = "Alice";
$Name = "Bob";
echo $name; // 输出 Alice
echo $Name; // 输出 Bob
?>

变量与数据类型

1. 变量定义:$ 符号

PHP 中变量必须以 美元符号 $ 开头,后跟变量名,变量名需满足:

  • 只能包含字母、数字、下划线 _
  • 不能以数字开头;
  • 区分大小写(如 $a$A 是不同变量)。

示例:

1
2
3
4
5
6
7
8
9
10
<?php
// 正确的变量定义
$age = 25; // 数字变量
$username = "Bob"; // 字符串变量
$is_student = true; // 布尔变量

// 错误的变量定义
$123num = 10; // 错误:以数字开头
$user-name = "Alice"; // 错误:包含减号(可用下划线 $user_name)
?>

数据类型(PHP8 支持的核心类型)

PHP 是弱类型语言(无需声明变量类型,会自动根据值推断),但 PHP8 增强了类型支持(如联合类型、严格模式)。核心数据类型分为 8 种,可分为三类:

(1)标量类型(单个值)
类型 描述 示例
整数(int) 无小数的数字(正数、负数、零) $num = 100; $neg = -50;
浮点数(float) 带小数的数字(支持科学计数法) $pi = 3.14; $sci = 1.2e3;(1.2e3=1200)
字符串(string) 文本数据(用单引号或双引号包裹) $str1 = 'Hello'; $str2 = "PHP8";
布尔值(bool) 只有两个值:true(真)或 false(假) $is_ok = true; $is_error = false;
(2)复合类型(多个值的集合)
类型 描述 示例
数组(array) 存储多个值的有序集合(索引数组 / 关联数组) $arr = [1, 2, 3]; $user = ['name' => 'Alice'];
对象(object) 类的实例(面向对象编程时使用) $obj = new stdClass(); $obj->name = 'Bob';
(3)特殊类型
类型 描述 示例
NULL 表示变量无值(需显式赋值 null $var = null;
资源(resource) 表示外部资源(如文件句柄、数据库连接) $file = fopen('test.txt', 'r');(后续讲解)

常用数据类型操作示例

(1)字符串(string)

字符串可用 单引号 '双引号 " 包裹,区别在于:

  • 单引号:不解析变量和转义字符(仅 \' 除外),性能更高;
  • 双引号:会解析变量(变量名会替换为值)和转义字符(如 \n 换行、\t 制表符)。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$name = "Alice";

// 单引号:不解析变量和转义
echo 'Hello $name\n'; // 输出:Hello $name\n

// 双引号:解析变量和转义
echo "Hello $name\n"; // 输出:Hello Alice(换行)

// 变量嵌入复杂场景:用花括号 {} 包裹变量
$user = ['name' => 'Bob'];
echo "Username: {$user['name']}"; // 输出:Username: Bob
?>
(2)数组(array)

PHP 数组支持两种形式:索引数组(按数字索引,默认从 0 开始)和 关联数组(按自定义键名,键名可为字符串或数字),用 []array() 定义(推荐 [],更简洁)。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
// 1. 索引数组(键为 0,1,2)
$fruits = ['apple', 'banana', 'orange'];
echo $fruits[0]; // 输出:apple(访问索引 0 的值)
$fruits[3] = 'grape'; // 添加新元素(索引 3)
echo count($fruits); // 输出:4(count() 函数:获取数组长度)

// 2. 关联数组(键为自定义字符串)
$user = [
'name' => 'Alice',
'age' => 25,
'is_student' => true
];
echo $user['name']; // 输出:Alice(访问键为 'name' 的值)
$user['age'] = 26; // 修改键为 'age' 的值
echo $user['age']; // 输出:26

// 3. 遍历数组(foreach 循环)
// 遍历索引数组 这里.是连接符,类似与java中的+
foreach ($fruits as $fruit) {
echo $fruit . " "; // 输出:apple banana orange grape
}

// 遍历关联数组(获取键和值)
foreach ($user as $key => $value) {
echo "$key: $value\n"; // 输出:name: Alice; age:26; is_student:1(true 转数字为 1)
}
?>
(3)NULL 类型

null 表示变量 “无值”,只有一种值 null(不区分大小写,但推荐小写)。以下情况变量为 null

  • 显式赋值 $var = null;
  • 变量未定义(但直接使用未定义变量会报 Notice 警告);
  • unset() 函数销毁变量后。

示例:

1
2
3
4
5
6
7
8
<?php
$var1 = null;
echo $var1; // 无输出(null 转换为字符串为空)

$var2 = "test";
unset($var2); // 销毁 $var2
echo $var2; // 警告:Undefined variable $var2,无输出
?>

运算符:实现数据计算与逻辑判断

PHP 支持多种运算符,按功能可分为:算术运算符、赋值运算符、比较运算符、逻辑运算符等,以下是常用运算符的示例:

算术运算符(用于数值计算)

运算符 描述 示例 结果
+ 加法 $a=5; $b=3; $a+$b 8
- 减法 $a-$b 2
* 乘法 $a*$b 15
/ 除法 $a/$b 1.666…
% 取余(模) $a%$b 2(5÷3 余 2)
++ 自增 $a++;(后增) $a 变为 6
-- 自减 --$b;(前减) $b 变为 2

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$a = 10;
$b = 4;

echo $a + $b; // 14
echo $a - $b; // 6
echo $a * $b; // 40
echo $a / $b; // 2.5(注意:PHP 除法结果默认是 float)
echo $a % $b; // 2(10÷4 余 2)

$a++; // $a 变为 11(先使用 $a,再自增)
echo $a; // 11

--$b; // $b 变为 3(先自减,再使用 $b)
echo $b; // 3
?>

赋值运算符(给变量赋值)

基础赋值:$var = value(将右边的值赋给左边的变量);
复合赋值(简化代码):将 “运算 + 赋值” 合并,如 $a += $b 等价于 $a = $a + $b

常用复合赋值运算符:

运算符 等价写法 示例
+= $a = $a + $b $a=5; $a+=3; → 8
-= $a = $a - $b $a=5; $a-=3; → 2
*= $a = $a * $b $a=5; $a*=3; → 15
/= $a = $a / $b $a=6; $a/=3; → 2
.= $a = $a . $b(字符串拼接) $a="He"; $a.="llo"; → “Hello”

示例:

1
2
3
4
5
6
7
8
9
10
11
<?php
// 数值复合赋值
$num = 10;
$num += 5; // 10+5=15
echo $num; // 15

// 字符串拼接(. 是字符串连接符)
$str = "Hello";
$str .= " PHP8"; // "Hello" + " PHP8" = "Hello PHP8"
echo $str; // Hello PHP8
?>

比较运算符(判断两个值的关系)

用于比较两个值,返回布尔值 truefalse,常用于条件判断(如 if 语句)。

常用比较运算符:

运算符 描述 示例 结果
== 等于(值相等,类型可转换) 5 == "5" true
=== 全等(值和类型都相等) 5 === "5" false
!= 不等于(值不等,类型可转换) 5 != "5" false
!== 不全等(值或类型不等) 5 !== "5" true
> 大于 10 > 5 true
< 小于 10 < 5 false
>= 大于等于 10 >= 10 true
<= 小于等于 10 <= 5 false

注意:推荐用 ===!==(全等 / 不全等),避免类型自动转换导致的意外结果(如 0 == "false" 会返回 true,但 0 === "false" 返回 false)。

示例:

1
2
3
4
5
6
7
8
<?php
$a = 5;
$b = "5";

var_dump($a == $b); // bool(true)(值相等,类型转换后相等)
var_dump($a === $b); // bool(false)(类型不同:int vs string)
var_dump($a > $b); // bool(false)($b 转换为 int 5,5不大于5)
?>

欢迎关注我的其它发布渠道