数组运算符 #
一、数组运算符列表 #
| 运算符 | 名称 | 示例 | 说明 |
|---|---|---|---|
| + | 联合 | $a + $b | 合并数组(保留键) |
| == | 相等 | $a == $b | 键值对相同 |
| === | 全等 | $a === $b | 键值对相同且顺序相同 |
| != | 不等 | $a != $b | 键值对不同 |
| <> | 不等 | $a <> $b | 键值对不同 |
| !== | 不全等 | $a !== $b | 键值对或顺序不同 |
二、联合运算符(+) #
2.1 基本用法 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['c' => 3, 'd' => 4];
$result = $a + $b;
print_r($result);
2.2 键冲突处理 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 3, 'c' => 4];
$result = $a + $b;
print_r($result);
$result = $b + $a;
print_r($result);
2.3 索引数组 #
php
<?php
$a = [1, 2, 3];
$b = [4, 5, 6];
$result = $a + $b;
print_r($result);
2.4 与 array_merge 的区别 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 3, 'c' => 4];
$union = $a + $b;
$merge = array_merge($a, $b);
echo "+ 运算符:\n";
print_r($union);
echo "array_merge:\n";
print_r($merge);
php
<?php
$a = [1, 2, 3];
$b = [4, 5, 6];
$union = $a + $b;
$merge = array_merge($a, $b);
echo "+ 运算符:\n";
print_r($union);
echo "array_merge:\n";
print_r($merge);
三、相等比较(==) #
3.1 基本比较 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 2, 'a' => 1];
var_dump($a == $b);
var_dump($a === $b);
3.2 键值对比较 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['a' => 1, 'b' => '2'];
var_dump($a == $b);
var_dump($a === $b);
3.3 嵌套数组 #
php
<?php
$a = ['user' => ['name' => 'John', 'age' => 25]];
$b = ['user' => ['name' => 'John', 'age' => 25]];
var_dump($a == $b);
四、全等比较(===) #
4.1 顺序敏感 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 2, 'a' => 1];
var_dump($a === $b);
4.2 类型敏感 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['a' => 1, 'b' => '2'];
var_dump($a === $b);
五、不等比较 #
5.1 != 和 <> #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['a' => 1, 'b' => 3];
var_dump($a != $b);
var_dump($a <> $b);
5.2 !== #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 2, 'a' => 1];
var_dump($a != $b);
var_dump($a !== $b);
六、数组比较函数 #
6.1 array_diff() #
计算数组差集:
php
<?php
$a = ['a' => 1, 'b' => 2, 'c' => 3];
$b = ['a' => 1, 'b' => 2];
$diff = array_diff($a, $b);
print_r($diff);
$diff = array_diff_assoc($a, $b);
print_r($diff);
6.2 array_intersect() #
计算数组交集:
php
<?php
$a = ['a' => 1, 'b' => 2, 'c' => 3];
$b = ['a' => 1, 'b' => 2, 'd' => 4];
$intersect = array_intersect($a, $b);
print_r($intersect);
$intersect = array_intersect_assoc($a, $b);
print_r($intersect);
6.3 array_diff_key() #
按键比较:
php
<?php
$a = ['a' => 1, 'b' => 2, 'c' => 3];
$b = ['a' => 10, 'd' => 40];
$diff = array_diff_key($a, $b);
print_r($diff);
6.4 array_diff_uassoc() #
自定义比较函数:
php
<?php
$a = ['a' => 1, 'b' => 2, 'c' => 3];
$b = ['A' => 1, 'B' => 2];
$diff = array_diff_uassoc($a, $b, 'strcasecmp');
print_r($diff);
七、数组操作函数 #
7.1 合并数组 #
php
<?php
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 3, 'c' => 4];
$merged = array_merge($a, $b);
print_r($merged);
$merged = [...$a, ...$b];
print_r($merged);
7.2 数组切片 #
php
<?php
$arr = [1, 2, 3, 4, 5];
$slice = array_slice($arr, 1, 3);
print_r($slice);
7.3 数组拼接 #
php
<?php
$a = [1, 2, 3];
$b = [4, 5, 6];
$combined = array_combine($a, $b);
print_r($combined);
八、实际应用 #
8.1 配置合并 #
php
<?php
$defaultConfig = [
'timeout' => 30,
'retries' => 3,
'debug' => false,
'cache' => true
];
$userConfig = [
'timeout' => 60,
'debug' => true
];
$config = array_merge($defaultConfig, $userConfig);
print_r($config);
8.2 数组去重 #
php
<?php
$arr = [1, 2, 2, 3, 3, 3, 4];
$unique = array_unique($arr);
print_r($unique);
8.3 数组过滤 #
php
<?php
$arr = [1, 2, 3, 4, 5, 6];
$even = array_filter($arr, fn($n) => $n % 2 === 0);
print_r($even);
8.4 数组映射 #
php
<?php
$arr = [1, 2, 3, 4, 5];
$squared = array_map(fn($n) => $n ** 2, $arr);
print_r($squared);
九、解构与展开 #
9.1 数组解构 #
php
<?php
[$a, $b, $c] = [1, 2, 3];
echo "$a, $b, $c";
['name' => $name, 'age' => $age] = ['name' => 'John', 'age' => 25];
echo "$name, $age";
9.2 展开运算符 #
php
<?php
$a = [1, 2, 3];
$b = [4, 5, 6];
$merged = [...$a, ...$b];
print_r($merged);
function add(int $a, int $b, int $c): int
{
return $a + $b + $c;
}
$args = [1, 2, 3];
echo add(...$args);
9.3 函数参数 #
php
<?php
function sum(int ...$numbers): int
{
return array_sum($numbers);
}
echo sum(1, 2, 3, 4, 5);
$arr = [1, 2, 3, 4, 5];
echo sum(...$arr);
十、比较表总结 #
| 比较方式 | 键值对 | 类型 | 顺序 |
|---|---|---|---|
| == | 相同 | 不严格 | 不要求 |
| === | 相同 | 严格 | 相同 |
| != | 不同 | 不严格 | 不要求 |
| !== | 不同或顺序不同 | 严格 | - |
十一、最佳实践 #
11.1 使用严格比较 #
php
<?php
if ($arr1 === $arr2) {
}
11.2 合并配置 #
php
<?php
$config = array_merge($defaults, $userConfig);
11.3 使用展开运算符 #
php
<?php
$merged = [...$arr1, ...$arr2];
11.4 解构赋值 #
php
<?php
['name' => $name, 'age' => $age] = $user;
十二、总结 #
本章学习了:
- 数组联合运算符(+)
- 数组比较运算符(==、===、!=、!==)
- 数组比较函数
- 数组操作函数
- 数组解构与展开
下一章将学习运算符优先级。
最后更新:2026-03-26