PHP 数组
数组是 PHP 中最常用的数据结构,可以存储多个值,支持索引数组和关联数组。
创建数组
// 索引数组 $fruits = ["苹果", "香蕉", "橙子"]; $nums = [1, 2, 3, 4, 5];`// 关联数组 $user = [ "name" => "张三", "age" => 25, "email" => "zhangsan@example.com", ];
// 多维数组 $matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]; ?> ``
访问与修改
php <?php $fruits = ["苹果", "香蕉", "橙子"];`echo $fruits[0]; // 苹果 echo $fruits[2]; // 橙子
$fruits[1] = "葡萄"; // 修改 $fruits[] = "西瓜"; // 追加
$user = ["name" => "张三", "age" => 25]; echo $user["name"]; // 张三 $user["city"] = "北京"; // 新增键 ?>
`常用数组函数
增删操作
php <?php $arr = [1, 2, 3];`array_push($arr, 4, 5); // 末尾添加 → [1,2,3,4,5] array_pop($arr); // 删除末尾 → [1,2,3,4] array_unshift($arr, 0); // 开头添加 → [0,1,2,3,4] array_shift($arr); // 删除开头 → [1,2,3,4]
// 删除指定元素 unset($arr[1]); // 删除索引 1 $arr = array_values($arr); // 重新索引 ?>
`查找与排序
php <?php $fruits = ["苹果", "香蕉", "橙子", "香蕉"];`// 查找 echo in_array("香蕉", $fruits); // true echo array_search("橙子", $fruits); // 2(返回索引) echo array_count_values($fruits)["香蕉"]; // 2(出现次数)
// 排序 $nums = [3, 1, 4, 1, 5, 9, 2, 6]; sort($nums); // 升序 rsort($nums); // 降序
$user = ["name" => "张三", "age" => 25, "city" => "北京"]; ksort($user); // 按键名升序 arsort($user); // 按值降序(保留键名) ?>
`遍历与转换
php <?php $prices = [100, 200, 300];`// array_map:对每个元素执行操作 $discounted = array_map(fn($p) => $p * 0.8, $prices); // [80, 160, 240]
// array_filter:过滤元素 $expensive = array_filter($prices, fn($p) => $p > 150); // [200, 300]
// array_reduce:归并 $total = array_reduce($prices, fn($carry, $item) => $carry + $item, 0); // 600 ?>
`合并与切片
php <?php $a = [1, 2, 3]; $b = [4, 5, 6];`$merged = array_merge($a, $b); // [1,2,3,4,5,6] $sliced = array_slice($merged, 1, 3); // [2,3,4] $unique = array_unique([1, 2, 2, 3, 3]); // [1,2,3]
// 解构赋值 [$first, $second] = $a; echo $first; // 1 echo $second; // 2 ?>
``php <?php $students = [ ["name" => "张三", "score" => 85], ["name" => "李四", "score" => 92], ["name" => "王五", "score" => 78], ];关联数组实战
// 按分数排序 usort($students, fn($a, $b) => $b["score"] - $a["score"]);
foreach ($students as $s) { echo "{$s['name']}:{$s['score']} 分\n"; } // 李四:92 分 // 张三:85 分 // 王五:78 分