在PHP中,数组(Array)是最常用的数据结构之一,用于存储和操作数据。以下是PHP网站开发中常见的数组处理方法,包括基础操作、高级技巧和性能优化。
1. 数组基础操作
1.1 创建数组
php
// 索引数组
$indexedArray = [1, 2, 3];
$indexedArray2 = array('', 'banana', 'orange');
// 关联数组
$assocArray = [
'name' => 'John',
'age' => 30,
'email' => 'john@example.com'
// 多维数组
$multiArray = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob']
1.2 添加/删除元素
php
$fruits = ['apple', 'banana'];
// 添加元素
$fruits[] = 'orange'; // 末尾添加
array_push($fruits, 'grape', 'mango'); // 添加多个
// 删除元素
unset($fruits[1]); // 删除索引1(banana)
array_pop($fruits); // 删除最后一个元素
array_shift($fruits); // 删除第一个元素
1.3 遍历数组
php
$users = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob']
// foreach 遍历
foreach ($users as $user) {
echo $user['name'] . "\n";
// for 遍历(仅索引数组)
for ($i = 0; $i < count($users); $i++) {
echo $users[$i]['name'] . "\n";
2. 常用数组函数
2.1 搜索与过滤
php
$numbers = [1, 2, 3, 4, 5];
// 检查值是否存在
if (in_array(3, $numbers)) {
echo "3 exists in array\n";
// 查找键名
$keys = array_keys($numbers); // [0, 1, 2, 3, 4]
// 过滤数组
$evenNumbers = array_filter($numbers, fn($n) => $n % 2 === 0); // [1 => 2, 3 => 4]
2.2 排序
php
$fruits = ['banana', 'apple', 'orange'];
sort($fruits); // 升序排序 ['apple', 'banana', 'orange']
rsort($fruits); // 降序排序
// 关联数组排序
$users = [
['name' => 'Alice', 'age' => 25],
['name' => 'Bob', 'age' => 20]
// 按 age 升序排序
usort($users, fn($a, $b) => $a['age'] <=> $b['age']);
2.3 合并与拆分
php
$array1 = [1, 2];
$array2 = [3, 4];
// 合并数组
$merged = array_merge($array1, $array2); // [1, 2, 3, 4]
// 拆分数组
$chunked = array_chunk($merged, 2); // [[1, 2], [3, 4]]
2.4 映射与归约
php
$numbers = [1, 2, 3];
// 映射(每个元素 * 2)
$doubled = array_map(fn($n) => $n * 2, $numbers); // [2, 4, 6]
// 归约(求和)
$sum = array_reduce($numbers, fn($carry, $n) => $carry + $n, 0); // 6
3. 高级数组处理技巧
3.1 数组去重
php
$duplicates = [1, 2, 2, 3, 3, 3];
$unique = array_unique($duplicates); // [1, 2, 3]
3.2 数组列提取
php
$users = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob']
// 提取所有 name
$names = array_column($users, 'name'); // ['Alice', 'Bob']
3.3 数组交集/差集
php
$array1 = [1, 2, 3];
$array2 = [2, 3, 4];
$intersect = array_intersect($array1, $array2); // [2, 3]
$diff = array_diff($array1, $array2); // [1]
3.4 随机打乱数组
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.