Appearance
7.4 数组常用函数
PHP提供了丰富的数组函数,用于处理和操作数组。
数组长度和检查
| 函数 | 描述 | 示例 |
|---|---|---|
count() | 计算数组元素个数 | count($array) |
sizeof() | 与count()相同 | sizeof($array) |
empty() | 检查数组是否为空 | empty($array) |
isset() | 检查数组元素是否存在 | isset($array['key']) |
数组添加和删除
| 函数 | 描述 | 示例 |
|---|---|---|
array_push() | 向数组末尾添加一个或多个元素 | array_push($array, $value1, $value2) |
array_pop() | 删除并返回数组最后一个元素 | array_pop($array) |
array_unshift() | 向数组开头添加一个或多个元素 | array_unshift($array, $value1, $value2) |
array_shift() | 删除并返回数组第一个元素 | array_shift($array) |
array_splice() | 移除数组的一部分并替换 | array_splice($array, $offset, $length, $replacement) |
数组排序
| 函数 | 描述 | 示例 |
|---|---|---|
sort() | 对数组进行升序排序 | sort($array) |
rsort() | 对数组进行降序排序 | rsort($array) |
asort() | 对关联数组按值升序排序 | asort($array) |
arsort() | 对关联数组按值降序排序 | arsort($array) |
ksort() | 对关联数组按键升序排序 | ksort($array) |
krsort() | 对关联数组按键降序排序 | krsort($array) |
数组查找
| 函数 | 描述 | 示例 |
|---|---|---|
in_array() | 检查数组是否包含指定值 | in_array($value, $array) |
array_search() | 搜索数组中的值并返回键 | array_search($value, $array) |
array_key_exists() | 检查数组是否存在指定键 | array_key_exists($key, $array) |
数组操作
| 函数 | 描述 | 示例 |
|---|---|---|
array_merge() | 合并一个或多个数组 | array_merge($array1, $array2) |
array_diff() | 计算数组差集 | array_diff($array1, $array2) |
array_intersect() | 计算数组交集 | array_intersect($array1, $array2) |
array_slice() | 从数组中取出一部分 | array_slice($array, $offset, $length) |
array_reverse() | 反转数组元素顺序 | array_reverse($array) |
array_unique() | 移除数组中的重复值 | array_unique($array) |
示例代码
php
<?php
// 数组长度和检查
$fruits = ["苹果", "香蕉", "橙子", "葡萄"];
echo "数组长度: " . count($fruits) . "<br>";
echo "数组是否为空: " . (empty($fruits) ? "是" : "否") . "<br>";
echo "是否存在索引2: " . (isset($fruits[2]) ? "是" : "否") . "<br>";
// 数组添加和删除
array_push($fruits, "梨", "桃");
echo "<br>添加元素后: " . implode(", ", $fruits) . "<br>";
$last = array_pop($fruits);
echo "删除的最后一个元素: $last<br>";
echo "删除后: " . implode(", ", $fruits) . "<br>";
array_unshift($fruits, "草莓");
echo "添加到开头: " . implode(", ", $fruits) . "<br>";
$first = array_shift($fruits);
echo "删除的第一个元素: $first<br>";
echo "删除后: " . implode(", ", $fruits) . "<br>";
// 数组排序
$numbers = [3, 1, 4, 1, 5, 9, 2, 6];
sort($numbers);
echo "<br>升序排序: " . implode(", ", $numbers) . "<br>";
rsort($numbers);
echo "降序排序: " . implode(", ", $numbers) . "<br>";
$student = ["name" => "张三", "age" => 18, "grade" => "高三"];
asort($student);
echo "按值升序排序: " . implode(", ", $student) . "<br>";
ksort($student);
echo "按键升序排序: " . implode(", ", $student) . "<br>";
// 数组查找
echo "<br>是否包含'香蕉': " . (in_array("香蕉", $fruits) ? "是" : "否") . "<br>";
$key = array_search("橙子", $fruits);
echo "'橙子'的索引: $key<br>";
echo "是否存在'name'键: " . (array_key_exists("name", $student) ? "是" : "否") . "<br>";
// 数组操作
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
$merged = array_merge($array1, $array2);
echo "<br>合并数组: " . implode(", ", $merged) . "<br>";
$diff = array_diff([1, 2, 3, 4], [2, 3, 5]);
echo "数组差集: " . implode(", ", $diff) . "<br>";
$intersect = array_intersect([1, 2, 3, 4], [2, 3, 5]);
echo "数组交集: " . implode(", ", $intersect) . "<br>";
$slice = array_slice($fruits, 1, 2);
echo "数组切片: " . implode(", ", $slice) . "<br>";
$reversed = array_reverse($fruits);
echo "反转数组: " . implode(", ", $reversed) . "<br>";
$unique = array_unique([1, 2, 2, 3, 3, 3]);
echo "去重数组: " . implode(", ", $unique) . "<br>";
?>注意事项
- 大多数数组函数会修改原数组,使用时要注意
- 排序函数会重新索引索引数组
- 关联数组的排序会保持键值对应关系
- 数组函数的参数顺序要注意,避免出错
练习
- 使用数组函数添加、删除和修改数组元素
- 使用数组排序函数对数组进行排序
- 使用数组查找函数查找特定元素
- 使用数组操作函数合并、分割和处理数组
