数组基础 #
一、数组概述 #
PHP数组是一种有序映射,可以存储多个值,支持数字索引和字符串键。
1.1 数组特点 #
- 可以存储任意类型的值
- 支持数字索引和字符串键
- 动态大小,无需预先声明
- 支持多维嵌套
二、创建数组 #
2.1 使用array() #
php
<?php
$numbers = array(1, 2, 3, 4, 5);
$user = array('name' => 'John', 'age' => 25);
2.2 使用短语法[] #
php
<?php
$numbers = [1, 2, 3, 4, 5];
$user = ['name' => 'John', 'age' => 25];
2.3 空数组 #
php
<?php
$empty1 = array();
$empty2 = [];
三、索引数组 #
3.1 创建索引数组 #
php
<?php
$fruits = ['apple', 'banana', 'cherry'];
$numbers = [1, 2, 3, 4, 5];
$mixed = [1, 'hello', true, null, [1, 2]];
3.2 访问元素 #
php
<?php
$fruits = ['apple', 'banana', 'cherry'];
echo $fruits[0];
echo $fruits[1];
echo $fruits[2];
3.3 修改元素 #
php
<?php
$fruits = ['apple', 'banana', 'cherry'];
$fruits[1] = 'blueberry';
print_r($fruits);
3.4 添加元素 #
php
<?php
$fruits = ['apple', 'banana'];
$fruits[] = 'cherry';
$fruits[] = 'date';
print_r($fruits);
3.5 自定义索引 #
php
<?php
$arr = [
5 => 'five',
10 => 'ten',
'hello'
];
print_r($arr);
四、关联数组 #
4.1 创建关联数组 #
php
<?php
$user = [
'name' => 'John',
'age' => 25,
'city' => 'Beijing'
];
$config = [
'host' => 'localhost',
'port' => 3306,
'database' => 'myapp'
];
4.2 访问元素 #
php
<?php
$user = ['name' => 'John', 'age' => 25];
echo $user['name'];
echo $user['age'];
4.3 修改元素 #
php
<?php
$user = ['name' => 'John', 'age' => 25];
$user['age'] = 26;
$user['city'] = 'Shanghai';
print_r($user);
4.4 添加元素 #
php
<?php
$user = ['name' => 'John'];
$user['age'] = 25;
$user['city'] = 'Beijing';
print_r($user);
五、混合数组 #
5.1 创建混合数组 #
php
<?php
$mixed = [
0 => 'first',
'name' => 'John',
1 => 'second',
'age' => 25,
'hobbies' => ['reading', 'gaming']
];
print_r($mixed);
5.2 访问混合数组 #
php
<?php
echo $mixed[0];
echo $mixed['name'];
echo $mixed['hobbies'][0];
六、多维数组 #
6.1 二维数组 #
php
<?php
$users = [
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Bob', 'age' => 35]
];
echo $users[0]['name'];
echo $users[1]['age'];
6.2 关联多维数组 #
php
<?php
$company = [
'name' => 'Tech Corp',
'departments' => [
'engineering' => [
'head' => 'Alice',
'count' => 50
],
'marketing' => [
'head' => 'Bob',
'count' => 20
]
]
];
echo $company['name'];
echo $company['departments']['engineering']['head'];
6.3 矩阵 #
php
<?php
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
echo $matrix[0][0];
echo $matrix[1][2];
七、数组操作 #
7.1 获取长度 #
php
<?php
$arr = [1, 2, 3, 4, 5];
echo count($arr);
echo sizeof($arr);
7.2 检查元素存在 #
php
<?php
$user = ['name' => 'John', 'age' => 25];
var_dump(isset($user['name']));
var_dump(isset($user['city']));
var_dump(array_key_exists('age', $user));
7.3 检查值存在 #
php
<?php
$fruits = ['apple', 'banana', 'cherry'];
var_dump(in_array('banana', $fruits));
var_dump(in_array('grape', $fruits));
var_dump(in_array('Banana', $fruits));
var_dump(in_array('Banana', $fruits, true));
7.4 删除元素 #
php
<?php
$fruits = ['apple', 'banana', 'cherry'];
unset($fruits[1]);
print_r($fruits);
$user = ['name' => 'John', 'age' => 25];
unset($user['age']);
print_r($user);
7.5 获取键和值 #
php
<?php
$user = ['name' => 'John', 'age' => 25];
$keys = array_keys($user);
$values = array_values($user);
print_r($keys);
print_r($values);
八、数组解构 #
8.1 索引数组解构 #
php
<?php
[$a, $b, $c] = [1, 2, 3];
echo "$a, $b, $c";
list($x, $y, $z) = [10, 20, 30];
echo "$x, $y, $z";
8.2 跳过元素 #
php
<?php
[, $second, , $fourth] = [1, 2, 3, 4, 5];
echo "$second, $fourth";
8.3 关联数组解构 #
php
<?php
['name' => $name, 'age' => $age] = ['name' => 'John', 'age' => 25];
echo "$name, $age";
8.4 嵌套解构 #
php
<?php
$user = [
'name' => 'John',
'address' => [
'city' => 'Beijing',
'country' => 'China'
]
];
['name' => $name, 'address' => ['city' => $city]] = $user;
echo "$name lives in $city";
九、数组展开 #
9.1 展开运算符 #
php
<?php
$a = [1, 2, 3];
$b = [4, 5, 6];
$merged = [...$a, ...$b];
print_r($merged);
$extended = [0, ...$a, 3.5, ...$b, 7];
print_r($extended);
9.2 函数参数展开 #
php
<?php
function add(int $a, int $b, int $c): int
{
return $a + $b + $c;
}
$args = [1, 2, 3];
echo add(...$args);
9.3 合并关联数组 #
php
<?php
$defaults = ['timeout' => 30, 'retries' => 3];
$options = ['timeout' => 60, 'debug' => true];
$config = [...$defaults, ...$options];
print_r($config);
十、数组转换 #
10.1 数组转字符串 #
php
<?php
$fruits = ['apple', 'banana', 'cherry'];
$str = implode(', ', $fruits);
echo $str;
10.2 字符串转数组 #
php
<?php
$str = 'apple,banana,cherry';
$arr = explode(',', $str);
print_r($arr);
10.3 对象转数组 #
php
<?php
class User
{
public $name = 'John';
public $age = 25;
}
$user = new User();
$arr = (array) $user;
print_r($arr);
10.4 JSON转换 #
php
<?php
$user = ['name' => 'John', 'age' => 25];
$json = json_encode($user);
echo $json;
$decoded = json_decode($json, true);
print_r($decoded);
十一、实际应用 #
11.1 配置数组 #
php
<?php
$config = [
'database' => [
'host' => 'localhost',
'port' => 3306,
'name' => 'myapp',
'user' => 'root',
'pass' => ''
],
'cache' => [
'enabled' => true,
'ttl' => 3600
],
'debug' => false
];
11.2 表单数据 #
php
<?php
$formData = [
'username' => $_POST['username'] ?? '',
'email' => $_POST['email'] ?? '',
'password' => $_POST['password'] ?? '',
'confirm_password' => $_POST['confirm_password'] ?? ''
];
11.3 API响应 #
php
<?php
function jsonResponse(array $data, int $status = 200): string
{
http_response_code($status);
header('Content-Type: application/json');
return json_encode($data);
}
$response = [
'success' => true,
'data' => [
'users' => [
['id' => 1, 'name' => 'John'],
['id' => 2, 'name' => 'Jane']
]
],
'meta' => [
'total' => 2,
'page' => 1
]
];
echo jsonResponse($response);
十二、总结 #
本章学习了:
- 数组的创建方式
- 索引数组和关联数组
- 多维数组
- 数组操作
- 数组解构
- 数组展开
- 数组转换
下一章将学习数组操作。
最后更新:2026-03-26