一、回顾上节课内容
- 条件控制语句(if/switch)
- 循环结构(while/for/foreach)
- 函数基础与作用域
二、数组深入
1. 多维数组
(1) 二维数组
<?php
// 创建二维数组
$students = array(
array("张三", 20, "男"),
array("李四", 22, "女"),
array("王五", 21, "男")
);
// 访问二维数组
echo $students[0][0]; // 输出"张三"
echo $students[1][1]; // 输出22
// 遍历二维数组
foreach ($students as $student) {
echo "姓名: ".$student[0].", 年龄: ".$student[1].", 性别: ".$student[2]."<br>";
}
?>
(2) 关联多维数组
<?php
$products = array(
array(
"id" => 1,
"name" => "手机",
"price" => 2999
),
array(
"id" => 2,
"name" => "笔记本",
"price" => 5999
)
);
// 遍历关联多维数组
foreach ($products as $product) {
echo "产品ID: ".$product["id"]."<br>";
echo "产品名称: ".$product["name"]."<br>";
echo "产品价格: ".$product["price"]."<br><br>";
}
?>
2. 常用数组函数
(1) 数组操作
<?php
$fruits = array("苹果", "香蕉", "橙子");
// count() - 获取数组长度
echo count($fruits); // 输出3
// array_push() - 向数组末尾添加元素
array_push($fruits, "葡萄");
print_r($fruits);
// array_pop() - 删除并返回数组最后一个元素
$last = array_pop($fruits);
echo "被删除的元素: $last";
// array_merge() - 合并数组
$moreFruits = array("梨", "西瓜");
$allFruits = array_merge($fruits, $moreFruits);
print_r($allFruits);
?>
(2) 数组排序
<?php
$numbers = array(3, 1, 4, 2, 5);
// sort() - 对数组升序排序
sort($numbers);
print_r($numbers);
// rsort() - 对数组降序排序
rsort($numbers);
print_r($numbers);
// asort() - 根据关联数组的值升序排序
$age = array("张三"=>25, "李四"=>20, "王五"=>30);
asort($age);
print_r($age);
// ksort() - 根据关联数组的键升序排序
ksort($age);
print_r($age);
?>
3. 其他实用数组函数
<?php
// array_keys() - 获取数组的所有键
$keys = array_keys($age);
print_r($keys);
// array_values() - 获取数组的所有值
$values = array_values($age);
print_r($values);
// in_array() - 检查数组中是否存在某个值
if (in_array("苹果", $fruits)) {
echo "找到了苹果";
}
// array_search() - 在数组中搜索给定的值并返回键
$key = array_search("香蕉", $fruits);
echo "香蕉的键是: $key";
?>
三、字符串深入
1. 常用字符串函数
(1) 字符串长度与截取
<?php
$str = "Hello PHP World";
// strlen() - 获取字符串长度
echo strlen($str); // 输出15
// substr() - 截取字符串
echo substr($str, 6); // 输出"PHP World" (从第6个字符开始)
echo substr($str, 6, 3); // 输出"PHP" (从第6个字符开始,取3个字符)
?>
(2) 字符串查找与替换
<?php
// strpos() - 查找字符串首次出现的位置
$position = strpos($str, "PHP");
echo "PHP首次出现在位置: $position"; // 输出6
// str_replace() - 字符串替换
$newStr = str_replace("PHP", "JavaScript", $str);
echo $newStr; // 输出"Hello JavaScript World"
// strtolower() - 转换为小写
echo strtolower($str); // 输出"hello php world"
// strtoupper() - 转换为大写
echo strtoupper($str); // 输出"HELLO PHP WORLD"
?>
(3) 字符串分割与连接
<?php
// explode() - 将字符串分割为数组
$words = explode(" ", $str); // 按空格分割
print_r($words); // 输出Array([0]=>Hello [1]=>PHP [2]=>World)
// implode() - 将数组元素连接成字符串
$newStr = implode("-", $words);
echo $newStr; // 输出"Hello-PHP-World"
// trim() - 去除字符串两端空白字符
$strWithSpace = " 有空格 ";
echo trim($strWithSpace); // 输出"有空格"
?>
2. 字符串格式化
<?php
// printf() - 格式化输出
$name = "张三";
$age = 25;
printf("姓名: %s, 年龄: %d", $name, $age); // 输出"姓名: 张三, 年龄: 25"
// sprintf() - 返回格式化字符串
$info = sprintf("姓名: %s, 年龄: %d", $name, $age);
echo $info;
// number_format() - 格式化数字
$number = 1234567.89;
echo number_format($number); // 输出"1,234,568"
echo number_format($number, 2); // 输出"1,234,567.89"
echo number_format($number, 2, ",", "."); // 输出"1.234.567,89"
?>
四、超全局变量
PHP提供了多个超全局变量,它们在脚本的全部作用域中都可用:
1. $_GET
获取通过URL参数传递的数据
<?php
// 假设URL是:http://example.com?name=张三&age=25
echo $_GET["name"]; // 输出"张三"
echo $_GET["age"]; // 输出"25"
?>
2. $_POST
获取通过POST方法提交的表单数据
<?php
// 假设有一个表单用POST方法提交了username和password
$username = $_POST["username"];
$password = $_POST["password"];
?>
3. $_REQUEST
包含$_GET、$_POST和$_COOKIE的内容
<?php
$value = $_REQUEST["key"]; // 可以获取GET或POST方式传递的key值
?>
4. $_SERVER
包含服务器和执行环境信息
<?php
echo $_SERVER["PHP_SELF"]; // 当前执行脚本的文件名
echo $_SERVER["SERVER_NAME"]; // 服务器名称
echo $_SERVER["HTTP_REFERER"]; // 引导用户代理到当前页的前一页的地址
echo $_SERVER["REMOTE_ADDR"]; // 浏览当前页面的用户的IP地址
?>
五、作业练习
- 创建一个多维数组存储3个学生的信息(学号、姓名、3门课程成绩),并计算每个学生的平均分
- 编写一个函数,接收一个字符串参数,返回该字符串的反转形式(不能使用strrev函数)
- 创建一个简单的表单处理页面,包含姓名、邮箱和留言字段,使用$_POST获取并显示提交的数据
- 使用数组函数对一组商品价格进行排序,并找出最高价和最低价
下节课预告
- 文件操作:读写文件
- 表单处理与验证
- 错误处理基础
这一切,似未曾拥有