创建数组
1.直接赋值
代码语言:javascript复制$array = array('apple', 'banana', 'cherry');
2.使用array()
函数
$fruits = array('apple' => 'red', 'banana' => 'yellow', 'cherry' => 'red');
访问数组元素
1.通过键访问元素
代码语言:javascript复制$fruits['apple'];
2.循环遍历数组中的元素:
代码语言:javascript复制foreach ($fruits as $key => $value) {
/* 处理每个元素$key为键名 $value为键值 */
}
数组操作函数
1.获取数组元素数量
代码语言:javascript复制$count = count($fruits);
2.增加数组元素
代码语言:javascript复制array_push($fruits, 'orange');
//方括号法
$fruits[] = 'orange';
//键值对方式添加关联数组元素
$colors['apple'] = 'red';
3.弹出数组末尾元素
代码语言:javascript复制$lastFruit = array_pop($fruits);
4.移除数组开头的元素
代码语言:javascript复制$firstFruit = array_shift($fruits);
5.在数组开头添加一个或多个元素
代码语言:javascript复制array_unshift($fruits, 'pear');
6.合并两个数组
代码语言:javascript复制$combinedArray = array_merge($fruits, $colors);
数组搜索筛选、过滤、转换
1.检查数组中是否存在某个值
代码语言:javascript复制if (in_array('red', $colors)) {
echo 'Red 存在于这个数组';
}
2.循环遍历数组获取其他元素
代码语言:javascript复制$data = [
[2, "北京市", 1],
[24, "天津市", 2]
];
foreach ($data as $item) {
if ($item[1] === "天津市") {
$result = $item[2];
break;
}
}
echo $result; // 输出 2
3.在数组中搜索给定的值,并返回对应的键。
代码语言:javascript复制$fruits = array('apple', 'banana', 'cherry');
$key = array_search('banana', $fruits);
echo $key // 输出1
//查找子数组返还下标
$data = [
[2, "北京市", 1],
[24, "天津市", 2]
];
$index = array_search(["", "天津市", ""], array_column($data, 1));
if ($index !== false) {
$result = $data[$index][0];
}
echo $result; // 输出 24
4.过滤数组中的元素,并返回满足指定条件的元素。
代码语言:javascript复制// 示例关联数组
$data = array(
array('id' => 1, 'name' => 'Alice', 'age' => 25),
array('id' => 2, 'name' => 'Bob', 'age' => 30),
array('id' => 3, 'name' => 'Charlie', 'age' => 28)
);
// 使用array_filter()函数选择年龄大于等于 28 的项
$filteredData = array_filter($data, function($item) {
return $item['age'] >= 28;
});
echo json_encode($filteredData);
输出值如下:
代码语言:javascript复制{
"1": {
"id": 2,
"name": "Bob",
"age": 30
},
"2": {
"id": 3,
"name": "Charlie",
"age": 28
}
}
5.对数组中的每个元素应用回调函数,并返回一个新数组,该数组包含回调函数的返回值。
代码语言:javascript复制$numbers = array(1, 2, 3, 4, 5);
$squared = array_map(function($value) {
return $value * $value;
}, $numbers);
// $squared 的值为 [1, 4, 9, 16, 25]
//或以上述4中筛选后的数据为例,提取其中的姓名
$filteredNames = array_map(function ($item) {
return $item['name'];
}, $filteredData);
echo json_encode($filteredNames);
//输出:{"1": "Bob", "2": "Charlie"}
6.提取数组中的键或值,并返回新数组
代码语言:javascript复制$fruits = array('apple' => 'red', 'banana' => 'yellow', 'cherry' => 'red');
$keys = array_keys($fruits);
// $keys 的值为 ['apple', 'banana', 'cherry']
$values = array_values($fruits);
// $values 的值为 ['red', 'yellow', 'red']
7.将数组元素归约为单个值。通过使用回调函数逐个处理数组元素,最终将它们减少为单个值。
代码语言:javascript复制$numbers = array(1, 2, 3, 4, 5);
$product = array_reduce($numbers, function($carry, $item) {
return $carry * $item;
}, 1);
// $product 的值为 120 (1*2*3*4*5)
数组排序
1.sort()
和 rsort()
// sort() 对数组进行升序排序
$numbers = array(4, 2, 8, 1, 5);
sort($numbers);
// $numbers 现在为 [1, 2, 4, 5, 8]
// rsort() 对数组进行降序排序
rsort($numbers);
// $numbers 现在为 [8, 5, 4, 2, 1]
2.asort()
和 arsort()
$colors = array('apple' => 'red', 'banana' => 'yellow', 'cherry' => 'red');
// asort() 按值对关联数组进行升序排序并保留键值关联
asort($colors);
// $colors 现在为 ['banana' => 'yellow', 'apple' => 'red', 'cherry' => 'red']
// arsort() 按值对关联数组进行降序排序并保留键值关联
arsort($colors);
// $colors 现在为 ['banana' => 'yellow', 'cherry' => 'red', 'apple' => 'red']
3.ksort()
和 krsort()
// 创建一个关联数组
$ages = array('Tom' => 30, 'Alice' => 25, 'Bob' => 35);
// ksort() 按键对关联数组进行升序排序并保持键值关联
ksort($ages);
// $ages 现在为 ['Alice' => 25, 'Bob' => 35, 'Tom' => 30]
// krsort() 按键对关联数组进行降序排序并保持键值关联
krsort($ages);
// $ages 现在为 ['Tom' => 30, 'Bob' => 35, 'Alice' => 25]