PHP 数组

数组是 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 分