数组运算符 #

一、数组运算符列表 #

运算符 名称 示例 说明
+ 联合 $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