基础语法
变量、数组、控制流、类型。
35 分钟
基础语法
这一课你将能做到
- 用正确的变量、字符串、数组语法写出结构清晰的 PHP 脚本
- 熟练使用 if/match/foreach 等控制流处理一组数据并输出结果
- 用类型声明和 strict_types 让 PHP 写出接近静态语言的严谨风格
为什么要学
变量、数组、控制流、类型声明是任何语言的「地基四件套」。PHP 的特殊之处在于:它是动态类型语言,但 PHP 7 之后引入了完整的类型声明体系,PHP 8 又补上了 match 表达式、命名参数等现代语法。今天企业级 PHP 项目的规范(如 Laravel 框架源码、PSR 标准)都大量使用类型声明——只会写无类型的「老式 PHP」,在现代代码库里寸步难行。
人话:这节课就是把「会打字」练到「会写文章」。学完你就能独立写一个处理数组的统计脚本、按条件分流的业务判断,这是后面函数、面向对象、数据库操作的全部前提。
先建立图像
PHP 变量的心智模型:带 $ 前缀的标签,贴在值上。
$price ──► 19.9 (float)
$name ──► "Spring" (string)
$tags ──► [0]=>'php' (array,有序键值对容器)
[1]=>'web'
和 Java 最大的区别:变量本身没有类型,值才有类型;把字符串赋给 $price 也不报错。但开启类型声明后,你可以在函数签名、类属性上重新找回静态检查。
跟着做
步骤 1:变量与字符串
新建 vars.php:
<?php
declare(strict_types=1);
$name = 'Spring';
$price = 19.9;
$active = true;
// 双引号支持变量插值,单引号是纯字面量
echo "框架名:{$name},价格:{$price}\n";
echo '框架名:{$name}\n'; // 原样输出 {$name}
echo $name . ' Boot' . PHP_EOL; // 点号拼接字符串
执行 php vars.php。记住两条铁律:变量以 $ 开头、双引号才插值。
步骤 2:类型声明初体验
<?php
declare(strict_types=1);
function add(int $a, int $b): int {
return $a + $b;
}
echo add(2, 3), PHP_EOL; // 5
echo add(2.5, 3); // TypeError!严格模式下浮点数不能传给 int
declare(strict_types=1) 必须是文件第一条语句,只对当前文件生效。开了它,传参类型不符直接抛 TypeError;不开,PHP 会做宽松转换(如 "5" 转成 5),隐患更深。
步骤 3:数组——PHP 的万能容器
<?php
declare(strict_types=1);
// 索引数组
$stack = ['PHP', 'Go', 'Java'];
$stack[] = 'Rust'; // 追加元素
echo count($stack), PHP_EOL; // 4
echo $stack[0], PHP_EOL; // PHP
// 关联数组(类似 Java 的 Map)
$user = ['id' => 1, 'name' => '张三', 'roles' => ['admin', 'dev']];
echo $user['name'], PHP_EOL; // 张三
echo $user['roles'][1], PHP_EOL; // dev
// 遍历
foreach ($user as $key => $value) {
if (is_array($value)) {
echo $key, ': ', implode(',', $value), PHP_EOL;
} else {
echo $key, ': ', $value, PHP_EOL;
}
}
PHP 数组 = 索引数组 + 字典二合一,底层是有序哈希表。写惯 Java 的人注意:不存在单独的 Map 类型,关联数组就是 Map。